相关疑难解决方法(0)

boost :: is_enum是如何工作的?

我很有意思这件事是如何在理论上起作用的.例:

#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;
}
Run Code Online (Sandbox Code Playgroud)

我尝试探索源代码,但它太难了(宏+模板代码导航失败).有人可以通过理论探索它是如何工作的吗?我不知道如何实施它.

c++ boost type-traits

7
推荐指数
1
解决办法
1798
查看次数

如何知道传递给函数的参数是否是c ++中的类,联合或枚举?

我想为所有枚举定义一个运算符<< <<,然后cout该值并打印它是这样的枚举:

码:

enum AnyEnum{A,B,C};
AnyEnum enm = A;
cout << enm <<endl;
Run Code Online (Sandbox Code Playgroud)

输出:

This is an enum which has a value equal to 0
Run Code Online (Sandbox Code Playgroud)

通过使用is_enum结构,我知道使用Boost库执行此操作的方法.但我不明白它是如何工作的.所以这就是为什么,一般来说,我感兴趣的是如何识别veriable是类类型,联合类型还是枚举(在编译时).

c++ enums boost template-meta-programming

3
推荐指数
1
解决办法
813
查看次数