Guide de déduction défini par l'utilisateur pour les types std
Pour une raison quelconque, il y a toujours un manque de CTAD attendu pour std::initializer_list
in clang :
std::initializer_list l{1,2,3}; // error in clang
L'ajout d'un guide défini par l'utilisateur comme celui-ci peut résoudre le problème :
namespace std {
template<class T>
initializer_list(const initializer_list<T>&) -> initializer_list<T>;
}
Mais est-il permis d'ajouter un guide défini par l'utilisateur pour CTAD pour les std::
types ?
Réponses
5 Oliv
Ajouter un guide de déduction à un type de bibliothèque standard est UB [namespace std]§4.4 :
Le comportement d'un programme C++ est indéfini s'il déclare : [...]
- un guide de déduction pour tout modèle de classe de bibliothèque standard.