我最近在阅读有关模板元编程的文章时遇到了一个陌生的语法。您可以在下面的第一个/其余成语中看到它:
template <typename... Ts>
struct Count;
template <typename First, typename... Rest>
struct Count<First, Rest...> {
enum: size_t { value = 1 + Count<Rest...>::value };
};
template <>
struct Count<> {
enum: size_t { value = 0 };
};
作者似乎正在使用某种匿名枚举来存储其常量表达式。为什么要这样做?从技术上讲这是有效的(enum name : type { enumerator = constexpr , enumerator = constexpr , ... }
),但是比简单的static constexpr size_t value = ...;
有什么优势?