Panduan pemotongan yang ditentukan pengguna untuk tipe std

Aug 15 2020

Untuk beberapa alasan masih ada kekurangan CTAD yang diharapkan untuk std::initializer_listdi clang :

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

Menambahkan panduan yang ditentukan pengguna seperti berikut ini dapat memperbaiki masalah :

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

Tetapi apakah diperbolehkan untuk menambahkan panduan yang ditentukan pengguna untuk CTAD untuk std::tipe?

Jawaban

5 Oliv Aug 15 2020 at 17:17

Menambahkan panduan pemotongan ke tipe perpustakaan standar adalah UB [namespace std] §4.4 :

Perilaku program C ++ tidak terdefinisi jika ia mendeklarasikan: [...]

  • panduan pemotongan untuk template kelas perpustakaan standar.