问题描述
下面的程序
template<int>
struct R{};
struct S
{
template<typename T>
auto f(T t) -> R<sizeof(t)>;
};
template<typename T>
auto S::f(T t) -> R<sizeof(t)> {}
使用 Clang 编译,但 GCC 10.2 给出了 f
定义错误
错误:没有声明匹配 'R
这看起来像是一个 GCC 错误,特别是因为 GCC 主干目前提供了一个 ICE
内部编译器错误:相同类型'R
此外,当声明和定义中的返回类型都更改为 R<sizeof (T)>
时,GCC 会编译程序。
该计划是否有效?
这是 demo。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)