次のコード:なぜこのstatic_assertはOS X上のclangだけで失敗するのですか?
#include <cstdint>
#include <type_traits>
enum class Enum : std::uint64_t {
zero,
};
static_assert(std::is_same<std::make_unsigned<Enum>::type, std::uint64_t>::value, "");
が打ち鳴らすとOS X上でコンパイルに失敗:
$ clang++ -std=c++11 -c t.cpp
t.cpp:8:1: error: static_assert failed ""
static_assert(std::is_same<std::make_unsigned<Enum>::type, std::uint64_t>::value, "");
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated
しかし、この同じファイルが打ち鳴らす3.8/3.7.1/3.7/3.6/3.5で大丈夫動作します。 1/3.5/3.4.1/3.3 on gcc.godbolt.org。私のシステムで
、打ち鳴らすには、Xcodeの7.3.1から普通のバージョンである:与えるもの
$ clang++ --version
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
?これは明らかに私のシステムのclangのバグであると思われますが、Xcodeのclangで失敗する理由はわかりませんが、clangの他のバージョンでは失敗しません。 Xcodeのクラン分布は大きく異なりますか?