CTAD для шаблона псевдонимаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 CTAD для шаблона псевдонима

Сообщение Anonymous »

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

template
class PtrC {
public:
constexpr PtrC(const T* const p) : ptr{p} {}

constexpr auto getMutable() requires(not IsConst) {
return const_cast(ptr);
}
public:
const T* ptr;
};

template
PtrC(T* const) -> PtrC;
template
PtrC(const T* const) -> PtrC;

template
using Ptr2PtrC = PtrC;

auto main() -> int {
Ptr2PtrC ptr2ptrc{new int* const{nullptr}};
}
Этот код компилируется с GCC 15.2, но отклонен Clang 21.1.0
  • Что правильно и почему?
  • Как в моем случае работает CTAD для второго параметра шаблона — Const?
  • Как преобразуются направляющие вывода для шаблона псевдонима?


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

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

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

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

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

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