将枚举类的定义放置在模板类内部,用作模板类的模板参数

时间:2019-04-26 09:31:24

标签: c++ templates enum-class

我想定义属于该类中某个类的枚举。这清楚表明它们属于同一类,并有助于防止名称空间污染:

class Bar
{
public:

    enum class Foo
    {
        something,
        somethingElse
    };

    Bar(Foo foo);

    //etc...
};

出于好奇,我想知道是否可以对枚举类做同样的事情,该枚举类用作其定义的类的模板参数:

template <Bar::Foo foo>
class Bar
{
public:

    enum class Foo
    {
        something,
        somethingElse
    };
};

很显然,这不会编译,因为在我们尝试将Bar用作模板参数类型时,尚未声明Bar::Foo。我想看看是否有人可以提出一些创造性的解决方法。

0 个答案:

没有答案