問題のコード:
template <class Bar,
size_t MAX_SIZE = std::numeric_limits<size_t>::max()>
size_t foo(Bar const& b) { omitted... }
.gcc 4.7.2 で問題なくコンパイルされます-std=c++11
。clang 3.0 では、次のエラーが発生します。
foo.hpp:35:28: error: non-type template argument of type 'unsigned long' is not an integral constant expression
size_t MAX_SIZE = std::numeric_limits<size_t>::max()>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
私が知る限りnumeric_limits
、c++11 ではこのように使用できるはずです。ここでclangは間違っていますか、それとも私は何かを認識していませんか?
編集:
コンパイル フラグは次のとおりです。clang++ -o foo.o -c -W -Wall -Wextra -Werror -std=c++11 -stdlib=libc++ -g -I. foo.cpp