我很感兴趣这个东西在理论上是如何工作的。例子:
#include <boost/type_traits/is_enum.hpp>
#include <iostream>
enum foo
{
AAA,
BBB
};
typedef foo bar;
struct sfoo {
enum bar {
CCC
};
};
int main()
{
std::cout << boost::is_enum<foo>::value << "\n"; // 1
std::cout << boost::is_enum<bar>::value << "\n"; // 1
std::cout << boost::is_enum<sfoo>::value << "\n"; // 0
std::cout << boost::is_enum<int>::value << "\n"; // 0
std::cout << boost::is_enum<sfoo::bar>::value << "\n"; // 1
return 0;
}
我尝试探索源代码,但太难了(宏 + 模板代码导航失败)。有人可以对它的工作原理进行理论探索吗?我不知道如何实现它。