#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
является правильным.