use*_*020 4 c++ initialization c++11 stdarray
例如
class A : public std::array<int, 3>
{
};
Run Code Online (Sandbox Code Playgroud)
和
A a{1, 2, 3}; // failed currently.
Run Code Online (Sandbox Code Playgroud)
如何使数组的派生类型接受聚合初始化?
您可以提供如下的可变参数模板构造函数:
class A : public std::array<int, 3> {
public:
template<typename... Args> constexpr A(Args&& ...args)
: std::array<int, 3>{{std::forward<Args>(args)...}} {}
};
Run Code Online (Sandbox Code Playgroud)
编辑:
以下版本也适用于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)...}) {}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |