自动模板参数:g ++ 7.3 vs clang ++ 6.0:哪个编译器正确?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动模板参数:g ++ 7.3 vs clang ++ 6.0:哪个编译器正确?相关的知识,希望对你有一定的参考价值。
两个编译器为此代码示例生成不同的结果。 Clang生成两种不同的类型。 G ++对fu
和fi
使用相同的类型。哪一个符合标准?
#include <iostream>
template< auto IVAL>
struct foo {
decltype(IVAL) x = -IVAL;
};
int main()
{
foo<10u> fu;
foo<10> fi;
std::cout << fi.x << " " << fu.x << '\n';
return 0;
}
g ++ - 7.3输出:
4294967286 4294967286
clang-6.0输出:
-10 4294967286
答案
gcc在这里是错误的,这些显然是两种截然不同的类型。
并确认 - 此错误已在gcc 8.0.1中修复
以上是关于自动模板参数:g ++ 7.3 vs clang ++ 6.0:哪个编译器正确?的主要内容,如果未能解决你的问题,请参考以下文章
哪个是更专业的模板功能? clang 和 g++ 对此有所不同