违规代码:
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