我有以下簡化的示例代碼,我試圖找出給定的值是否是其型別列舉的最大值。
enum class MyEnum : unsigned char {
VALUE,
OTHER_VALUE,
_LAST
};
template<typename T, T _L>
bool is_not_last(T value) {
return value < _L;
}
int main()
{
is_not_last<MyEnum, MyEnum::_LAST>(MyEnum::OTHER_VALUE);
return 0;
}
如何格式化模板以便我可以在is_not_last不先指定型別的情況下呼叫。
期望的結果:
is_not_last<MyEnum::_LAST>(MyEnum::OTHER_VALUE);
以下宣告不起作用:
template<T _L>
bool is_not_last(T value); // Doesn't have typename specified
template<typename T _L>
bool is_not_last(T value); // Invalid syntax
我覺得編譯器應該能夠從中推斷出型別,MyEnum::_LAST但我一直無法弄清楚。
非常感謝。
uj5u.com熱心網友回復:
從 C 17 開始,你可能會這樣做
template <auto L>
bool is_not_last(decltype(L) value) {
return value < L;
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/371189.html
下一篇:從模板引數包C 中解壓第一個引數
