避免硬编码枚举类型

时间:2016-11-11 20:59:46

标签: c++ c++11

c++11代码中,每次使用枚举值时避免提及特定的枚举限定符会很好 - 因为它是一个新代码,并且它被重构了很多。

为了这个目的,这个伪代码的最后一行的精神可能是:

enum abc { a,b,c };
// some long code of events which returns the enum's value
auto e = []()->abc{return abc::b;}();
if (e == std::declval(e)::a) { ...

如果在C++11中无法实现,C++14或17?

是否可行

1 个答案:

答案 0 :(得分:8)

即将结束,您可以使用decltype

if (e == decltype(e)::a) {
    ...