Przewodnik po odliczeniach zdefiniowanych przez użytkownika dla typów standardowych

Aug 15 2020

Z jakiegoś powodu nadal brakuje oczekiwanego CTAD dla std::initializer_listin clang :

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

Dodanie przewodnika zdefiniowanego przez użytkownika, takiego jak poniższy, może rozwiązać problem :

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

Ale czy można dodać przewodnik zdefiniowany przez użytkownika dla CTAD dla std::typów?

Odpowiedzi

5 Oliv Aug 15 2020 at 17:17

Dodanie przewodnika dedukcji do standardowego typu biblioteki to UB [namespace std] §4.4 :

Zachowanie programu C ++ jest niezdefiniowane, jeśli deklaruje: [...]

  • przewodnik dotyczący dedukcji dla dowolnego standardowego szablonu klas bibliotecznych.