【发布时间】:2021-02-18 12:44:43
【问题描述】:
我的印象是,在新的 C++20 标准下,以下代码应该成为有效代码:
struct Foo
{
int a, b;
};
template<Foo>
struct Bar
{};
Bar<{.a=1, .b=2}> bar;
然而,gcc 10.2.0 和 -std=c++20 设置抱怨:could not convert ‘{1, 2}’ from ‘<brace-enclosed initializer list>’ to ‘Foo’ 和 Clang 也无法编译这个 sn-p。有人能指出为什么它的格式不正确吗?
【问题讨论】:
-
此示例程序已被 GCC 11 和 MSVC 19.28 接受,演示:gcc.godbolt.org/z/Tfn4bcaaY
标签: c++ gcc language-lawyer c++20