これが理論上どのように機能するのか興味深いです。例:
#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;
}
ソースコードを調べようとしましたが、難しすぎました(マクロとテンプレートのコードナビゲーションが失敗します)。誰かがそれがどのように機能するか理論の探求を得ることができますか?どのように実装できるのか、私にはわかりません。