相关疑难解决方法(0)

将指针转换为模板参数:Comeau&MSVC编译,GCC失败

请考虑以下代码:

template<int* a>
class base {};

int main()
{
    base<(int*)0> test;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Comeau和MSVC都没有问题编译(除了关于未使用的变量的Comeau警告),而GCC base<(int*)0> test;在线路上失败,说明

在函数`int main()'中:强制转换为除积分或枚举类型以外的类型不能出现在常量表达式中

模板参数1无效

究竟是什么抱怨的?谁是对的 - 这段代码应该编译吗?值得注意的是,我的GCC版本非常陈旧(3.4.2),因此可能与它有关.谢谢.

c++ compiler-construction gcc templates

6
推荐指数
1
解决办法
3429
查看次数

标签 统计

c++ ×1

compiler-construction ×1

gcc ×1

templates ×1