Guida alla detrazione definita dall'utente per i tipi std

Aug 15 2020

Per qualche motivo manca ancora il CTAD previsto per std::initializer_listin clang :

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

L'aggiunta di una guida definita dall'utente come la seguente può risolvere il problema :

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

Ma è consentito aggiungere una guida definita dall'utente per CTAD per std::i tipi?

Risposte

5 Oliv Aug 15 2020 at 17:17

L'aggiunta di una guida alla deduzione a un tipo di libreria standard è UB [namespace std]§4.4 :

Il comportamento di un programma C++ non è definito se dichiara: [...]

  • una guida alla deduzione per qualsiasi modello di classe di biblioteca standard.