开发者社区> 问答> 正文

c++重载决议具体化优先于函数模板

template void f(T a){ cout << "aaaaaaa"; }
template <> void f(int & a){ cout << "fffffffffff"; }
int b;f(b);
为什么输出aaaaaaa,不是应该输出fffffffffff吗,看书上说具体化优先于模板函数的
求知道的大神指点下啦,万分感谢

展开
收起
a123456678 2016-03-06 13:13:48 2350 0
3 条回答
写回答
取消 提交回答
  • 乐于学习与分析

    另外关于函数模板的主模板和全特化版本之间的决议问题(函数模板只能全特换,不能偏特化(特化在template 后一个<>, 模板之后一个<>),偏特化可以用重载等效,当然全特化也可以用重载等效)。重载决议的顺序:普通函数 > 主模板(未特化的模板) > 全特换版本。(C++编程剖析问题、方案和设计准则 P43)

    2019-07-17 18:54:25
    赞同 展开评论 打赏
  • 软件开发,安全加密

    另外关于函数模板的主模板和全特化版本之间的决议问题(函数模板只能全特换,不能偏特化(特化在template 后一个<>, 模板之后一个<>),偏特化可以用重载等效,当然全特化也可以用重载等效)。重载决议的顺序:普通函数 > 主模板(未特化的模板) > 全特换版本。(C++编程剖析问题、方案和设计准则 P43)

    2019-07-17 18:54:25
    赞同 展开评论 打赏
  • #include <iostream>
    using namespace std;
    template <typename T>void f(T a){ cout << "aaaaaaa"; }
    void f(int & a){ cout << "fffffffffff"; }
    int main()
    {
     int b;
     f(b);
    }
    2019-07-17 18:54:25
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载

相关实验场景

更多