收录查询

[转贴][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;
}

 

posted @ 2006-03-25 23:55 -> 阅读(...) 评论(...) 编辑 收藏