Benutzerdefinierter Abzugsleitfaden für Standardtypen

Aug 15 2020

Aus irgendeinem Grund fehlt immer noch die erwartete CTAD für std::initializer_listin clang :

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

Das Hinzufügen einer benutzerdefinierten Anleitung wie der folgenden kann das Problem beheben :

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

Aber ist es erlaubt, eine benutzerdefinierte Anleitung für CTAD für std::Typen hinzuzufügen?

Antworten

5 Oliv Aug 15 2020 at 17:17

Das Hinzufügen eines Abzugsleitfadens zu einem Standardbibliothekstyp ist UB [namespace std]§4.4 :

Das Verhalten eines C++-Programms ist undefiniert, wenn es deklariert: [...]

  • ein Abzugsleitfaden für jede Standardbibliotheksklassenvorlage.