У меня есть некоторый код C ++, который принимает следующую форму:
template <typename type>
class foo
{
type a;
class bar;
};
template <typename type>
class foo<type>::bar
{
enum class baz;
};
template <typename type>
enum class foo<type>::bar::baz
{
val1,
val2
};
С помощью этого кода я пытаюсь сделать класс enum доступным для методов внутри foo :: bar и иметь возможность хранить данные типа этого класса enum. Класс enum также не относится к типу шаблона - перечислители класса enum являются целыми числами / типом по умолчанию класса enum.
Однако, когда я компилирую это MinGW / Code :: Blocks, это, кажется, выдает два сообщения об ошибке, оба в строке:
enum class foo<type>::bar::baz
ошибка: объявление шаблона 'enum baz'
ошибка: foo :: бар не был объявлен