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

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