引用自cppreference.com:
添加模板特化
只有当声明依赖于至少一个程序定义的类型,而且特化满足所有原始模板的要求时(除了禁止此类特化的情况),才允许向std命名空间添加任何标准库|类模板(自从C++20起)|的模板特化。
这是否意味着,从C++20开始,不再允许为用户定义的类型将函数模板的特化添加到std
命名空间中?如果是这样,那么许多现有代码都可能会出现问题,是吗?(这似乎是一个“激进”的变化。)而且,它将使这样的代码产生未定义的行为,这将不会触发编译错误(但希望能生成警告)。
std::function
提供一个专门化的实现? - 463035818_is_not_a_numberstd::
命名空间中编写函数,而不是使用类模板std::function
。 - Caleth