Член класса constexpr без присвоения не компилируется в GCC, но компилируется в Clang и MSVC.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Член класса constexpr без присвоения не компилируется в GCC, но компилируется в Clang и MSVC.

Сообщение Anonymous »

Следующее будет компилироваться в MSVC и Clang, но не в GCC. Мне интересно, что правильно:

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

class TCPSocket
{

struct TCP_SocketDeleter
{
void operator() (int*) const;
};
constexpr static inline TCP_SocketDeleter socket_deleter;

};
Ошибка:

статический элемент данных 'constexpr' 'socket_deleter' должен иметь
инициализатор 11 | constexpr static inline TCP_SocketDeleter
socket_deleter;

При использовании GCC мне нужно специально выполнить " = {}" или = "TCP_SocketDeleter{}"
Вот ссылка на Godbolt, где сравниваются три компилятора. GCC не может его скомпилировать, MSVC и Clang его компилируют.

Подробнее здесь: https://stackoverflow.com/questions/798 ... does-on-cl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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