据我了解,引用不能绑定到表达式会返回一个临时对象(即rvalue)。因此,以下内容应该是非法的:
auto& a = cv::Vec3f::all(0.f)
静态方法cv::Vec3f::all()
的定义为
template<typename _Tp, int cn> inline
Vec<_Tp, cn> Vec<_Tp, cn>::all(_Tp alpha)
{
Vec v;
for( int i = 0; i < cn; i++ ) v.val[i] = alpha;
return v;
}
typedef Vec<float,3> Vec3f;
尽管以上代码已在Visual Studio 2013中成功编译,但是a
的类型被标识为Vec<float,3>&
。谁可以帮助我?