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;
这样?