我在win32 program @ windows 7机器上使用代码“boost :: call_traits :: param_type”。令我惊讶的是,它不是“双”,而是“const double &”。为什么boost :: call_traits <double> :: param_type是“const double&”,而不是“double”
我认为所有基元类型都可以很好地使用函数参数的“传值”,这不是一种常识吗?因为很多人会用is_pod来决定是否使用引用,不是吗?
我在win32 program @ windows 7机器上使用代码“boost :: call_traits :: param_type”。令我惊讶的是,它不是“双”,而是“const double &”。为什么boost :: call_traits <double> :: param_type是“const double&”,而不是“double”
我认为所有基元类型都可以很好地使用函数参数的“传值”,这不是一种常识吗?因为很多人会用is_pod来决定是否使用引用,不是吗?
boost::call_traits
类模板尚未专门针对double
。主类模板返回const T &
,这就是为什么它是const double &
而不是double
,虽然在这种情况下它并不重要,但如果T
是具有大量数据成员的类类型,那么它的确很重要。为了避免不必要的复制,它是const引用。