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

Aug 15 2020

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

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::типов?

Ответы

5 Oliv Aug 15 2020 at 17:17

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

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

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