假设我有一个这样的类模板:
template<typename T, size_t N>
struct S {
std::array<T,N> a;
};
Run Code Online (Sandbox Code Playgroud)
是否有我可以放置的默认成员初始化程序a,
template<typename T, size_t N>
struct S {
std::array<T,N> a = ???;
};
Run Code Online (Sandbox Code Playgroud)
这样,无论是什么T,都a将永远初始化元素(永远不会有不确定的价值)?即,即使T是原始类型int.
Bar*_*rry 19
这个:
template<typename T, size_t N>
struct S {
std::array<T,N> a = {};
};
Run Code Online (Sandbox Code Playgroud)
这将以递归方式复制初始化每个元素{}.因为int,这将零初始化.当然,有人总能写:
struct A {
A() {}
int i;
};
Run Code Online (Sandbox Code Playgroud)
这将阻止i初始化.但那就是他们.
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |