作为对这个问题的补充,这里发生了什么:
#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" };
等操作。此外,我的lazy-construct-array也是一个聚合体:https://dev59.com/5E3Sa4cB1Zd3GeqPtkCH#2662526 - Johannes Schaub - litbboost::array
的那个特性时,我有了一种启迪,也就是大脑的性满足感。那些简单而又有意义的东西总是能让我产生这种感觉。 - wilhelmtell