Указатель на отвратительный тип функции? Ошибка компилятора?C++

Программы на C++. Форум разработчиков
Anonymous
Указатель на отвратительный тип функции? Ошибка компилятора?

Сообщение Anonymous »

Что такое FTDecay в соответствии с C++23?

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

template 
struct Decompose;

template 
struct Decompose {
using Type = T;
};

template 
using FTDecay = typename Decompose::Type;

FTDecay x = "Hello";
В текущих реализациях MSVC, Clang и GCC последняя строка выше генерирует сообщения об ошибках, в которых упоминается неправильно сформированный тип int (*)() & (демо). GCC говорит:

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

error: cannot convert 'const char*' to 'FTDecay' {aka 'int (*)() &'}
in initialization
P0172r0 говорит, что он неправильно сформирован (требуется диагностика) для формирования ссылки или указателя на отвратительный тип функции. В статье вводится этот термин; это означает тип функции, за которым следует квалификатор cv-ref. Соответственно, использование X = int (*)() &; отвергается всеми компиляторами (демо).


Подробнее здесь: https://stackoverflow.com/questions/782 ... mpiler-bug

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