Hướng dẫn khấu trừ do người dùng xác định cho các loại std
Đối với một số lý do vẫn còn thiếu dự kiến CTAD cho std::initializer_list
trong kêu vang :
std::initializer_list l{1,2,3}; // error in clang
Thêm hướng dẫn do người dùng xác định như sau có thể khắc phục sự cố :
namespace std {
template<class T>
initializer_list(const initializer_list<T>&) -> initializer_list<T>;
}
Nhưng nó có được phép thêm một hướng dẫn do người dùng xác định cho CTAD cho std::
các loại không?
Trả lời
5 Oliv
Thêm hướng dẫn khấu trừ vào kiểu thư viện tiêu chuẩn là UB [namespace std] §4.4 :
Hành vi của một chương trình C ++ là không xác định nếu nó khai báo: [...]
- một hướng dẫn khấu trừ cho bất kỳ mẫu lớp thư viện tiêu chuẩn nào.