小编gmy*_*gmy的帖子

即使使用强制转换,"也无法转换模板参数"错误的指针参数

假设我有一个模板类声明如下:

template< int *x > struct y { int *b; y() { b = x; }}
Run Code Online (Sandbox Code Playgroud)

我确实需要模板参数作为常量内存地址 - 它是一个嵌入式代码.如果我尝试像这样实例化它:(编译器是gcc 4.8.1 with -std = gnu ++ 11)

y< 1 > c;   
Run Code Online (Sandbox Code Playgroud)

我将得到一个错误"无法将模板参数'1'转换为'int*'",这很好,并且根据标准.我明白了.

我的问题是,转换为指针也不起作用:

y< (int *)1 > d;
y< reinterpret_cast<int *>(1) > e;
Run Code Online (Sandbox Code Playgroud)

错误:无法将模板参数'1u'转换为'int*'

在这两种情况下.这是为什么?模板参数已经转换,不是吗?

c++ templates pointers

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

标签 统计

c++ ×1

pointers ×1

templates ×1