動作するように見えるコードを次に示します。
#include <cassert>
#include <limits>
enum test { A = 1 };
int main()
{
int max = std::numeric_limits<test>::max();
assert(max > 0);
}
しかし、Linux では GCC (4.6.2) と clang (2.9) の両方で失敗します: 列挙型の max() は実際にはゼロです! これは、C++11 列挙型指定子を使用して、列挙型に必要な型を明示的に指定した場合でも当てはまります。
どうしてこれなの?また、C++11 の動作に関しては、明示的に要求されているものですか? 厳密に型指定された列挙型に関する論文である N2347 では、それについての言及は見つかりませんでした。