Можно ли использовать auto для определения переменной статического класса?C++

Программы на C++. Форум разработчиков
Anonymous
Можно ли использовать auto для определения переменной статического класса?

Сообщение Anonymous »

Рассмотрим этот простой пример:

Код: Выделить всё

struct Class {
struct Inner {};
static Inner a;
};
Я не могу определить это с помощью этого синтаксиса:

Код: Выделить всё

auto Class::a = Inner{};
— gcc и msvc жалуются одинаково:

Код: Выделить всё

:9:6: error: conflicting declaration 'auto Class::a'
9 | auto Class::a = Inner{};
|      ^~~~~
:6:18: note: previous declaration as 'Class::Inner Class::a'
6 |     static Inner a;
|                  ^
но clang принимает этот код.
Конечно, причина использования этого синтаксиса заключается в том, чтобы не повторять Class:: дважды:
р>

Код: Выделить всё

Class::Inner Class::a{};
Итак, вопрос - это правильно (правильно clang) или неправильно (правы gcc и msvc)?

Подробнее здесь: https://stackoverflow.com/questions/786 ... definition

Вернуться в «C++»