Определяемое пользователем руководство по дедукции для стандартных типов

По какой-то причине все еще отсутствует ожидаемый CTAD дляstd::initializer_listв лязг:

std::initializer_list l{1,2,3}; // error in clang

Добавление определяемого пользователем руководства, подобного следующему, может решить проблему:

namespace std {
    template<class T> 
    initializer_list(const initializer_list<T>&) -> initializer_list<T>; 
} 

Но можно ли добавить определяемое пользователем руководство для CTAD для std:: типы?

1 ответ

Решение

Добавление руководства по выводу к стандартному типу библиотеки - это UB [namespace std]§4.4:

Поведение программы на C++ не определено, если она объявляет: [...]

  • руководство по вычету для любого стандартного шаблона класса библиотеки.
Другие вопросы по тегам