2014-12-23 3 views
1

Как указано std::function in cppreference.com, реализация std::function заключается в объявлении неопределенного std::function до его определения. Какова цель объявить это? Связано ли это с шаблоном Variadic класса?Какова цель объявления неопределенной функции std :: перед ее определением?

ответ

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

- частная специализация, которая не может существовать без неограниченной декларации из первой части.