C ++,引用“构造函数”

时间:2011-02-28 04:34:57

标签: c++

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()));
    }

2 个答案:

答案 0 :(得分:2)

这很好,它就像从int&int&的演员,并返回int&,并返回o

我不确定这会起什么作用。

答案 1 :(得分:0)

它正在扩展到......

int& f(int & r){

   return int& (r);

}

变成......

int & r(o);

这是完全合法的c ++。