更模糊的困境……我喜欢C,但有时我讨厌它.
我无法弄清楚为什么编译器在这里抱怨,以及我能做些什么呢.
- struct blah
- {
- template<class t>
- blah(void(*)(t),t){}
- };
- void Func(int i) {}
- void Func2(int& i) {}
- void test()
- {
- int i = 3;
- blah b(Func,i);
- blah b2(Func2,i); //error C2660: 'blah::blah' : function does not take 2 arguments
- blah b3(Func2,(int&)i); //error C2660: 'blah::blah' : function does not take 2 arguments
- }
这里发生了什么?
我正在使用MSVC2008.