从这里的例子中获取信息:trivial vs. standard layout vs. POD
下面的代码通过了:
然而,以下内容不适用:
所以,如果只要一个类型不是标准布局就可以了,那么std::string怎么可能是标准布局呢?
struct T {
public:
int i;
private:
int j;
};
static_assert(! std::is_standard_layout<T>::value, "");
然而,以下内容不适用:
static_assert(! std::is_standard_layout<std::string>::value, "");
所以,如果只要一个类型不是标准布局就可以了,那么std::string怎么可能是标准布局呢?
T
有什么明显的“简单”之处(“只需要这些”),然后你也没有解释为什么你认为std::string
具有一些T
没有的特性是如此离谱。 - Lightness Races in Orbit