将引用绑定到临时对象

时间:2019-04-19 03:01:03

标签: c++ opencv rvalue temporary-objects

据我了解,引用不能绑定到表达式会返回一个临时对象(即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>&。谁可以帮助我?

0 个答案:

没有答案