在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?
答案 0 :(得分:8)
即将结束,您可以使用decltype
:
if (e == decltype(e)::a) {
...