C++ 为什么不允许模板函数的部分专门化?

C++ 为什么不允许模板函数的部分专门化?,c++,templates,C++,Templates,我可以找到一些问题,询问我为什么不能专门化成员函数: 但是为什么C++规范不允许模板函数的部分专门化,当它们不一定是类的成员时? #包含,因为函数是重载解析的主题,因此可以有多个同名函数模板,它们接受不同的参数。部分专门化只会使它复杂化而没有任何好处。“松散函数”-->大多数时候被称为“自由函数”,你在寻找什么样的答案?一个简单的“因为标准是这么说的”答案?引用了标准中说明这一点的部分?为什么标准会这么说?还有什么吗?@JaMiT,只是一些有意义的东西,即一个合理的动机。例如,我得到的印象

我可以找到一些问题,询问我为什么不能专门化成员函数:

  • <>但是为什么C++规范不允许模板函数的部分专门化,当它们不一定是类的成员时?


    #包含

    ,因为函数是重载解析的主题,因此可以有多个同名函数模板,它们接受不同的参数。部分专门化只会使它复杂化而没有任何好处。“松散函数”-->大多数时候被称为“自由函数”,你在寻找什么样的答案?一个简单的“因为标准是这么说的”答案?引用了标准中说明这一点的部分?为什么标准会这么说?还有什么吗?@JaMiT,只是一些有意义的东西,即一个合理的动机。例如,我得到的印象是,标准不允许这样做,只是因为他们这么说或觉得(没有任何背景/基础)。但正如
    @ÖöTiib
    所说的,这似乎是有原因的,要么实现过于复杂,要么与函数重载存在直接冲突。这本身就是一个答案,但如果你能举例说明这是一个什么样的问题,那就太棒了。许多问题都与这一解释有关:因为函数是重载解析的主题,所以你可以有几个同名的函数模板,它们接受不同的参数。部分专门化只会使它复杂化而没有任何好处。“松散函数”-->大多数时候被称为“自由函数”,你在寻找什么样的答案?一个简单的“因为标准是这么说的”答案?引用了标准中说明这一点的部分?为什么标准会这么说?还有什么吗?@JaMiT,只是一些有意义的东西,即一个合理的动机。例如,我得到的印象是,标准不允许这样做,只是因为他们这么说或觉得(没有任何背景/基础)。但正如
    @ÖöTiib
    所说的,这似乎是有原因的,要么实现过于复杂,要么与函数重载存在直接冲突。这本身就是一个答案,但如果你能举例说明这是一个什么样的问题,那就太棒了。许多问题都与此解释相关: