[英]POD in Visual Studio 2008
以下代碼
#include <iostream>
#include <new>
#include <cstring>
#include <type_traits>
template<typename T>
void is_pod(char* c)
{
cout << "Type " << c;
if(std::is_pod<T>::value)
::std::cout << " is POD" << endl;
else
::std::cout << " is not!" << endl;
}
#define CHECK_TYPE(ty) ::is_pod<ty>(#ty)
struct POD_Parent{};
struct POD_Child : public POD_Parent{int y;};
struct POD_Child2 {int x; POD_Parent y; POD_Child ssd;};
int main()
{
CHECK_TYPE(POD_Parent);
CHECK_TYPE(POD_Child);
CHECK_TYPE(POD_Child2);
給出以下結果: 這很奇怪!
Type POD_Parent is POD
Type POD_Child is not!
Type POD_Child2 is POD
POD_Child 怎么可能不是 POD?! 而 POD_Child2 是 POD?!!
請注意,我使用 MinGW(使用選項 -std=c++11)編譯它,它說它們都是 POD。
根據[MSDN][1]
具有基類的類型不是POD
所以POD_Child
不是POD
但對於POD_Child2
它可能是編譯器的一些錯誤忽略了ssd
基類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.