此代码有效,无需指定构造函数:
struct Foo
{
int a;
int b;
};
//...
int a1, b1;
Foo foo = {a1, b1};
如果我将 Foo 设为模板,则它不起作用。
template<typename T1, typename T2>
struct Foo
{
T1 a;
T2 b;
};
//...
int a1, b1;
Foo foo = {a1, b1};
它说扣除失败/提供了 2 个参数,而预期有 1 个。如果我添加一个这样的构造函数,Foo(T1, T2){}
它就可以工作。我想,这种结构默认情况下只适用于结构。我怎么了?
编辑:我正在使用 Clang,这似乎不支持它。MSVC 和 GCC 都使用 c++20 编译器标志编译它。