例如
class A : public std::array<int, 3>
{
};
和
A a{1, 2, 3}; // failed currently.
如何让数组的派生类型接受聚合初始化?
最佳答案
您可以提供一个可变模板构造函数,如下所示:
class A : public std::array<int, 3> {
public:
template<typename... Args> constexpr A(Args&& ...args)
: std::array<int, 3>{{std::forward<Args>(args)...}} {}
};
编辑:
以下版本也适用于 Visual Studio:
class A : public std::array<int, 3> {
public:
template<typename... Args> constexpr A(Args&& ...args)
: std::array<int, 3>(std::array<int,3>{std::forward<Args>(args)...}) {}
};
关于c++ - 如何使数组的派生类型接受聚合初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37808553/