【问题标题】:What is the purpose of declaring an undefined std::function before its definition?在定义之前声明未定义的 std::function 的目的是什么?
【发布时间】:2014-12-23 15:33:34
【问题描述】:

正如std::function in cppreference.com所提到的,std::function的实现是在其定义之前声明一个未定义的std::function。宣布这一点的目的是什么?它与模板可变参数类有关吗?

【问题讨论】:

    标签: c++ c++11


    【解决方案1】:

    这个定义是为了允许类的特化。所以,如果你想声明

    std::function<ClassType> function;
    

    你得到编译时错误,这意味着这个参数的std::function没有定义,它只为std::function&lt;ReturnType(Args)&gt;定义

    【讨论】:

      【解决方案2】:

      在提到的链接中,

      template< class >
      class function;
      

      是类模板声明。第二部分

      template< class R, class... Args >
      class function<R(Args...)>
      

      是一种偏特化,没有第一部分的无限制声明就不能存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 2014-01-08
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多