Как указано std::function in cppreference.com, реализация std::function
заключается в объявлении неопределенного std::function
до его определения. Какова цель объявить это? Связано ли это с шаблоном Variadic класса?Какова цель объявления неопределенной функции std :: перед ее определением?
1
A
ответ
3
Это определение предназначено для специализации класса. Так что, если вы пытаетесь объявить
std::function<ClassType> function;
Вы получаете во время компиляции ошибка, это означает, что std::function
для этого параметра не определено, оно определяется только для std::function<ReturnType(Args)>
1
В ссылке говорится,
template<class>
class function;
- это объявление шаблона класса. Вторая часть
template< class R, class... Args >
class function<R(Args...)>
- частная специализация, которая не может существовать без неограниченной декларации из первой части.