क्या टेम्पलेट पैरामीटर एक एनम-क्लास प्रकार सुनिश्चित करने का कोई तरीका है?सुनिश्चित करें कि टेम्पलेट पैरामीटर एक enum class
मुझे पता है type_traits
में std::is_enum
है, लेकिन मैं नहीं चाहता कि यह नियमित enums, enum_classes से मेल खाता हो। वांछित प्रभाव के
उदाहरण:
enum class EnumClass {};
enum Enum {};
class Class {};
template <typename T>
void Example()
{
static_assert(/* T is EnumClass */, "`T` must be an enum class");
}
Example<EnumClass>(); // Ok
Example<Enum>(); // Error
Example<Class>(); // Error
मैं सी ++ 11, और दुर्भाग्य से उपयोग कर रहा हूँ किसी भी उच्च नहीं जा सकते हैं (हालांकि मैं वैसे भी समाधान जानने के लिए उत्सुक हो जाएगा, भले ही वह नए मानक शामिल)।
क्या यह संभव है?
मुझे सही अगर मैं गलत हूँ, लेकिन आप बस तथ्य के आधार पर कर रहे हैं कि enum कक्षाएं परोक्ष परिवर्तनीय नहीं हैं इंटीग्रल के लिए? एक निहित रूपांतरण ऑपरेटर को परिभाषित करना संभव नहीं है? –
@ गिलादनाम आप 'एनम क्लास' से एक निहित ऑपरेटर को कैसे परिभाषित करते हैं? –
हाँ, मेरा बुरा, आप वास्तव में 'एनम कक्षा' के अंदर ऑपरेटरों या कार्यों को परिभाषित नहीं कर सकते हैं। –