为什么boost :: call_traits <double> :: param_type是"const double&",而不是"double"

JQ.*_*JQ. 6 c++ parameters boost

我在win32程序@ windows 7机器上使用代码"boost :: call_traits :: param_type".令我惊讶的是,它不是"双重"而是"常数双倍".

我认为所有原始类型都很好地使用"按值传递"的函数参数,这不是常识吗?因为很多人会使用is_pod来确定是否使用引用,不是吗?

Naw*_*waz -1

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