請考慮以下代碼。我假設通過強類型枚舉的類型指定我可以使用它傳遞給相同類型的函數和模板,因爲指定的基礎類型是相同的;儘管編譯器會抱怨缺少類型轉換。在下面的代碼中刪除關鍵字class
和枚舉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;
}
是的,這基本上是我最終做的。感謝您的解釋 – bjackfly