[转贴][VC++6.0] 一个很深的模板Bug
原文地址:http://blog.vckbase.com/bruceteen/archive/2005/09/16/12160.html
#include <iostream>
using namespace std;
template <size_t n> void foo( void )
{
cout << n << endl;
};
void bar1( void )
{
foo<1>();
}
void bar2( void )
{
foo<2>();
}
int main(int argc, char* argv[])
{
bar1();
bar2();
return 0;
}
// 期待输出 1 2
// 实际输出 2 2
==========================
VC的开发工程师可能以为所有的人都会这么用:
#include <iostream>
using namespace std;
template <class T>
T foo( size_t n)
{
cout << n << endl;
return 0;
};
void bar1( void )
{
foo<size_t>(1);
}
void bar2( void )
{
foo<size_t>(2);
}
int main(int argc, char* argv[])
{
bar1();
bar2();
return 0;
}