Член класса 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

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