2011-11-29 69 views

回答

-1

boost::call_traits类模板尚未专门针对double。主类模板返回const T &,这就是为什么它是const double &而不是double,虽然在这种情况下它并不重要,但如果T是具有大量数据成员的类类型,那么它的确很重要。为了避免不必要的复制,它是const引用。

4

根据doc,该优化显然仅适用于“小”内置类型。

从快速浏览source,它看起来像“小”类型被认为是那些满足sizeof(T) <= sizeof(void *)。在32位机器上,这显然不包括double

在某些情况下,它可能是更好的传递参数为double,而不是double const&,但一如既往,你必须基准和测试...

相关问题