Интересно, как правильно использовать идеальный перенаправленный функтор? Вот два фрагмента кода. Какой из них лучший, а если нет, то какая лучшая форма?Идеальная пересылка функтора
template<typename T, typename... Args>
void callMe(T&& func, Args&&... args) {
func(std::forward<Args>(args)...);
}
Или
template<typename T, typename... Args>
void callMe(T&& func, Args&&... args) {
std::forward<T>(func)(std::forward<Args>(args)...);
}
EDIT:
Повлияет ли это разрешение перегрузки? Если func
operator()
имеет ref-квалификатор для &&
или const &
, должен ли я использовать последнюю версию и должен ли я беспокоиться о том, какую перегрузку я звоню?
Спасибо!
Последнее верно, если оператор вызова функции может иметь ref-квалификатор –
@PiotrSkotnicki, можете ли вы привести пример того, что вы имеете в виду? –
@JohanLundberg http://coliru.stacked-crooked.com/a/2114bc29d189fde9 –