Размещение определения класса enum, используемого в качестве параметра шаблона для класса шаблона, внутри класса шаблона - PullRequest
0 голосов
/ 26 апреля 2019

Мне нравится определять мои перечисления, принадлежащие определенному классу внутри этого класса.Это дает понять, что они принадлежат друг другу, и помогает против загрязнения пространства имен:

class Bar
{
public:

    enum class Foo
    {
        something,
        somethingElse
    };

    Bar(Foo foo);

    //etc...
};

Чисто из любопытства Я хотел бы знать, можно ли сделать то же самое для класса enum, который используется в качестве параметра шаблона длякласс, в котором он определен:

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

    enum class Foo
    {
        something,
        somethingElse
    };
};

Очевидно, что это не скомпилируется, потому что Bar еще не объявлено, пока мы пытаемся использовать Bar::Foo в качестве типа параметра шаблона.Я хотел бы посмотреть, может ли кто-нибудь придумать какой-нибудь творческий обходной путь.

...