#include <array>
struct litmus final : std::array<unsigned char, 16>
{
};
static_assert(std::is_pod<std::array<unsigned char, 16> >::value, "not pod");
// this fails on MSVC:
static_assert(std::is_pod<litmus>::value, "not pod");
以下編譯器同意litmus
是莢果:
- 鐺++版本3.5(軀幹198621)http://coliru.stacked-crooked.com/a/7add7a2fe58a7e38
- g ++ 4.8.1 http://coliru.stacked-crooked.com/a/74cfe97f06c8c128
但是,MSVC12(VS2013 RTM)認爲第二個斷言失敗。
- 誰是對的?
- 有沒有什麼竅門可以讓MSVC將這個類視爲pod?
編輯有關信息:
is_trivially_copyable<litmus>
回報上MSVC真正的煩躁。這對許多不嚴格要求實際POD性能的情況可能有用。
FWIW我看了標準第9節中的* standard-layout class *和* POD struct *的規範,我同意'石蕊'應該是POD。雖然不能提供解決方法。 – BoBTFish
甚至不知道你可以使用'最終'那樣,謝謝! – user1233963
假設您的用例實際上與此示例一樣簡單,您可以專門爲'litmus'的'std :: is_pod'返回true。 –