Standart türler için kullanıcı tanımlı kesinti kılavuzu

Aug 15 2020

Nedense hala beklenen eksikliği CTAD için std::initializer_listde clang :

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

Aşağıdaki gibi kullanıcı tanımlı bir kılavuz eklemek sorunu çözebilir :

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

Ancak, std::türler için CTAD için kullanıcı tanımlı bir kılavuz eklenmesine izin verilir mi?

Yanıtlar

5 Oliv Aug 15 2020 at 17:17

Standart bir kitaplık türüne bir kesinti kılavuzu eklemek UB [ad alanı std] §4.4'tür :

Bir C ++ programının davranışı, şunu bildirirse tanımsızdır: [...]

  • herhangi bir standart kütüphane sınıfı şablonu için bir kesinti kılavuzu.