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

What is the purpose of declaring an undefined std::function before its definition?

本文关键字:std 未定义 function 是什么 一个 定义 声明      更新时间:2023-10-16

正如 cppreference.com 所引用的std::function,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...)>

是一种部分专业化,如果没有第一部分的无限制声明,它就不可能存在。

相关文章: