8

以下を考えると

#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が podであることに同意します。

ただし、MSVC12 (VS2013 RTM) は、2 番目のアサートが失敗することを維持します。

  1. 誰が正しいですか?
  2. MSVC にクラスをポッドとして扱わせるためのトリックはありますか?

EDIT参考までに: is_trivially_copyable<litmus>MSVC で true-ness を返します。これは、実際の POD らしさが厳密に必要とされない多くの場合に役立ちます。

4

1 に答える 1