這個問題在這里已經有了答案: 推導非型別模板引數的模板型別 1 個回答 昨天關門。
我想知道在撰寫類似這樣的內容時是否可以推斷或忽略值模板引數的型別:
enum class MyEnum {A, B}
enum class MyOtherEnum {X, Y}
template <typename T, T value>
struct GenericStruct {};
當MyGenericStruct同時使用Tand時value,必須通過,但T可以從背景關系中推斷出,typename T = decltype(value)除非value尚未定義。template <auto value>也不作業。
有什么方法可以簡單地撰寫MyGenericStruct<MyEnum::A>而不是MyGenericStruct<MyEnum, MyEnum::A>不使用宏?
uj5u.com熱心網友回復:
如果可以使用 C 17,則可以auto作為非型別模板引數的型別使用。那給你
template <auto value>
struct GenericStruct {};
現在,value它的型別將由它的初始化器推匯出來,就像你已經宣告了一個帶有型別的變數并為你提供了在這個現場示例auto中看到的所需語法。GenericStruct<MyEnum::A> foo;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/508182.html
