#include <iostream>
#include <type_traits>
struct base_pod_t {
unsigned x;
};
struct der_pod_t : public base_pod_t { };
int main()
{
std::cout << "base_pod_t is POD: " << std::is_pod<base_pod_t>::value << std::endl;
std::cout << "der_pod_t is POD: " << std::is_pod<der_pod_t>::value << std::endl;
base_pod_t b1 = {}; // OK
base_pod_t b2 = {3}; // OK
der_pod_t p1 = {}; // OK
// der_pod_t p2 = {4}; // ERROR!
}
最后一行代码报错,我怎样用大括号初始化der_pod_t
的值?
似乎即使它是POD类型,它也会尝试使用构造函数?
编辑: 正如@Praetorian和@dyb所建议的,它是一个POD类型,因此std::is_pod<der_pod_t>::value的结果是正确的。