模板简单问题
首先说明一下:
void test(const const int);
这样声明肯定是错误的。
现在我们看看下面的这个模板:
template <class T>
void test(const T a){//注意此处有一个const
...
}
test<const int>(4);//注意实例化类型中还有一个const
此处T应该被实例化为const int,那么test模板函数的实例化结果就会出现两个const的情形:
void test(const const int);
既然这种声明方式是非法的,那为什么编译器允许上述程序顺利通过编译呢?
附:编译环境GCC version 3.2.3。