#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!
}
Kết quả cuối cùng là lỗi. Làm thế nào tôi có thể khởi tạo cú pháp der_pod_t
với giá trị?khởi tạo cú đúp cho nhóm được thừa kế
Dường như đó là POD mà nó cố gắng sử dụng hàm tạo?
EDIT: Như @Praetorian và @dyb gợi ý nó là một POD do đó result of std::is_pod<der_pod_t>::value
is correct.
bạn có trình biên dịch không tuân thủ. g ++ 4.8.2 tạo ra một nhị phân có nghĩa rằng der_pod_t không phải là một loại POD –
@ BЈовић gcc phiên bản 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) nói là một POD. – name
Rõ ràng là một lỗi. gcc phiên bản 4.8.2 (Ubuntu 4.8.2-19ubuntu1) nói với nó là không. –