Guida alla detrazione definita dall'utente per i tipi std
Aug 15 2020
Per qualche motivo manca ancora il CTAD previsto per std::initializer_list
in 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.