在定义之前声明未定义的std :: function的目的是什么?

时间:2014-12-23 07:29:26

标签: c++ c++11

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

2 个答案:

答案 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...)>

是部分特化,如果没有第一部分的无限制声明,则不能存在。

相关问题