std 类型的用户定义推导指南

User-defined deduction guide for std types

由于某种原因,仍然缺少预期 CTAD for std::initializer_list in clang:

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

像下面这样添加用户定义的向导可以fix the issue:

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

但是是否允许为 std:: 类型添加用户定义的 CTAD 指南?

对标准库类型添加推导指南是UB [namespace std]§4.4:

The behavior of a C++ program is undefined if it declares : [...]

  • a deduction guide for any standard library class template.