考虑以下代码。我假设通过指定强类型枚举的类型,我可以使用它传递给相同类型的函数和模板,因为指定的基础类型是相同的;尽管编译器抱怨缺少对类型的强制转换。在下面的代码中,删除back toclass
枚举上的关键字和说明符将起作用。我知道他们不希望对强类型枚举进行任何类型转换,但是当底层类型与函数或模板预期接收的类型相同时,我希望编译器不会抱怨这一点而不是强制一个特定的演员表。想法?Test::TOTAL_ITEMS
TOTAL_ITEMS
#include <iostream>
#include <cstdint>
template <typename T, std::size_t N = 10>
class Y {
public:
Y() : z_() {
}
~Y() = default;
private:
T z_[N];
};
class X {
public:
enum class Test : std::size_t {
ITEM1 = 0,
ITEM2,
TOTAL_ITEMS,
};
private:
Y<int, Test::TOTAL_ITEMS> collection;
};
int main() {
X xx;
}