如std::function in cppreference.com所述,std::function
的实现是在定义之前声明未定义的std::function
。宣布这个的目的是什么?它与模板可变参数类有关吗?
答案 0 :(得分:3)
这个定义是为了允许类的专业化。所以,如果你想宣布
std::function<ClassType> function;
您收到编译时错误,也就是说,此参数的std::function
未定义,仅为std::function<ReturnType(Args)>
答案 1 :(得分:1)
在提到的链接中,
template< class >
class function;
是类模板声明。第二部分
template< class R, class... Args >
class function<R(Args...)>
是部分特化,如果没有第一部分的无限制声明,则不能存在。