【发布时间】:2010-05-14 22:45:49
【问题描述】:
作为this question 的附录,这里发生了什么:
#include <string>
using namespace std;
struct A {
string s;
};
int main() {
A a = {0};
}
显然,您不能将 std::string 设置为零。有人可以提供关于这里实际应该发生的事情的解释(请参考 C++ 标准)吗?然后举例说明):
int main() {
A a = {42};
}
这些中的任何一个都有明确的定义吗?
对我来说又是一个尴尬的问题 - 我总是给我的结构构造函数,所以这个问题以前从未出现过。
【问题讨论】:
-
boost::array类模板也是一个聚合。所以你可以用它来做array<std::string, 2> a = { "foo", "bar" };,例如。另外,我的惰性构造数组也是一个聚合:stackoverflow.com/questions/2662417/… -
隐式转换+聚合...ಠ_ಠ
-
@litb 当我第一次看到
boost::array的那个功能时,我有了一个启示,也就是大脑的性满足。很有意义的简单事情往往对我这样做。