Компиляторы расходятся во мнениях относительно типа статической функции-члена.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Компиляторы расходятся во мнениях относительно типа статической функции-члена.

Сообщение Anonymous »

Clang отклоняет следующий код:

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

#include 

struct k { static void f(); };
// clang nope, gcc ok, msvc ok
static_assert(std::same_as);
Похоже, что это сводится к тому, следует ли проверять decltype(k{}.f) либо как тип void(), либо как тип void (&)( ) или даже введите void (&&)(). При заключении скобок k{}.f (т. е.: decltype((k{}.f))) и Clang, и GCC согласовывают тип void (&)(), а MSVC рассматривает выражение как тип void (&&)(). Кажется, это говорит о том, что и GCC, и MSVC не рассматривают проверку типа простого k{}.f как выражение lvalue.
Я предполагаю, что не существует специального исключение с decltype при проверке статических функций-членов в форме k{}.f. Следовательно, означает ли это, что и GCC, и MSVC несовместимы?
Демо

Подробнее здесь: https://stackoverflow.com/questions/790 ... r-function
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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