簡體   English   中英

Visual Studio 2008 中的 POD

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM