cod*_*nia 5 c++ templates visual-studio-2010
class Foo
{
friend class SquirrelVM;
public:
Foo() { cout << "Ctor" << endl; }
virtual ~Foo() { cout << "Dtor" << endl; }
Foo(const Foo & o) { cout << "const Ctor" << endl; }
template <typename _ty>
Foo(const _ty & val) { cout << "T const Ref" << endl; }
template <typename _ty>
Foo(_ty & val) { cout << "T Ref" << endl; }
template <typename _ty>
Foo(_ty * val) { cout << "T Ptr" << endl; }
};
Foo CreateFoo()
{
Foo ret;
return ret;
}
int main( int argc, char* argv[] )
{
Foo f = CreateFoo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
vs2005和2010年之间的产出不同.预期产出是这样的......
Ctor
const Ctor
Dtor
Dtor
Run Code Online (Sandbox Code Playgroud)
如果我在vs2005中构建,则得出以上输出.
但是,vs2010的输出与vs2005不同
Ctor
T Ref
Dtor
Dtor
Run Code Online (Sandbox Code Playgroud)
为什么模板功能的优先级高于vs2010中的正常功能?
[edit]如果在复制构造函数中省略了const,则会出现预期的输出(与vs2005相同).如果复制构造函数的形式与推荐形式不同,是否有任何副作用?推荐的形式......我的意思是...... Foo(const Foo&);
不是Foo(Foo&);
归档时间: |
|
查看次数: |
199 次 |
最近记录: |