读书人

std:ref的用法遇到一个编译异常

发布时间: 2012-06-05 13:54:06 作者: rapoo

std::ref的用法遇到一个编译错误!
下面这段代码编译有错误:

C/C++ code
#include<iostream>using namespace std;struct s{    int i;    s():i(11){cout<<__FUNCTION__<<endl;}    s(const s& ss):i(ss.i){cout<<__FUNCTION__<<endl;}    s& operator=(const s&ss){i=ss.i;cout<<__FUNCTION__<<endl;}};template<typename T>void f( T t ){    cout<<t.i<<endl;    cout<<__FUNCTION__<<endl;}int main(void){    s s1;    f( std::cref(s1) );    return 0;}

VC10说:
error C2039: “i”: 不是“std::tr1::reference_wrapper<_Ty>”的成员

我的代码错误在哪里? 我希望参数传递给f的时候,不要调用拷贝构造函数,要用一个ref的形式传进去。
怎么改呢?

[解决办法]
cout<<t.get().i<<endl;
这样?

读书人网 >C++

热点推荐