【发布时间】:2014-12-23 15:33:34
【问题描述】:
正如std::function in cppreference.com所提到的,std::function的实现是在其定义之前声明一个未定义的std::function。宣布这一点的目的是什么?它与模板可变参数类有关吗?
【问题讨论】:
正如std::function in cppreference.com所提到的,std::function的实现是在其定义之前声明一个未定义的std::function。宣布这一点的目的是什么?它与模板可变参数类有关吗?
【问题讨论】:
这个定义是为了允许类的特化。所以,如果你想声明
std::function<ClassType> function;
你得到编译时错误,这意味着这个参数的std::function没有定义,它只为std::function<ReturnType(Args)>定义
【讨论】:
在提到的链接中,
template< class >
class function;
是类模板声明。第二部分
template< class R, class... Args >
class function<R(Args...)>
是一种偏特化,没有第一部分的无限制声明就不能存在。
【讨论】: