#c #scope #initialization #language-lawyer #constexpr
Вопрос:
Я недавно хотел написать такой код:
struct FunnyBusiness {
static constexpr const void *IDENTITY = (const void *)amp;IDENTITY;
};
Однако GCC (10.2) отклоняет этот код («ИДЕНТИФИКАТОР не был объявлен в этой области»), в то время как Clang (11.0) компилирует его просто отлично.
Допустимо ли, чтобы инициализатор static constexpr
переменной-члена принимал адрес самой переменной-члена?
Комментарии:
1. Это не имеет никакого отношения к делу
constexpr
. gcc также не будет компилировать это:struct FunnyBusiness { inline static void *IDENTITY = amp;IDENTITY; };
, см.: wandbox.org/permlink/7dALAZIaJ39JYfA1