【发布时间】:2014-06-27 01:56:28
【问题描述】:
假设我有一个模板类声明如下:
template< int *x > struct y { int *b; y() { b = x; }}
我确实需要模板参数是一个常量内存地址——它是一个嵌入式代码。 如果我尝试像这样实例化它:(编译器是 gcc 4.8.1 和 -std=gnu++11)
y< 1 > c;
我会收到一个错误“无法将模板参数 '1' 转换为 'int*'”,这很好,符合标准。我明白了。
我的问题是转换为指针也不起作用:
y< (int *)1 > d;
y< reinterpret_cast<int *>(1) > e;
错误:无法将模板参数“1u”转换为“int*”
在这两种情况下。这是为什么?模板参数已经转换了,不是吗?
【问题讨论】: