template<typename T, typename R>
T f(R &r) { return T(r); }
int main() {
int o;
f<int&>(o);
}
这可以吗? Comeau没有抱怨,所以我认为int&(...)
形式没问题?
原因示例:
typename boost::mpl::if_c<
(rank == 1),
reference,
tensor_ref<typename detail::array_ref<A>::type>
>::type
operator[](const int &i) {
typedef typename boost::mpl::if_c<
(rank == 1),
reference,
tensor_ref<typename detail::array_ref<A>::type>
>::type T;
return T(detail::array_ref<A>::generate(this->data()));
}
答案 0 :(得分:2)
这很好,它就像从int&
到int&
的演员,并返回int&
,并返回o
。
我不确定这会起什么作用。
答案 1 :(得分:0)
它正在扩展到......
int& f(int & r){
return int& (r);
}
变成......
int & r(o);
这是完全合法的c ++。