Использование std::apply в шаблоне классаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование std::apply в шаблоне класса

Сообщение Anonymous »

Я хочу запустить функцию-член с аргументами, определенными кортежем. Сам кортеж получает свои типы из шаблона.

Я просмотрел такие ответы, как https://stackoverflow.com/a/69694086/18658154, однако в моем случае он не компилируется.
template
class ViewPath : public Path {
public:
ViewPath(Types ...args) {
// irrelevant code here
}
void executeFunction() const override {
std::apply(std::bind_front(this->function, this), this->function_args);
}
private:
std::function function;
std::tuple function_args;
};

Я также пробовал заменить Types... на int, но возникают те же ошибки:
/usr/include/c++/v1/tuple:1354:29: error: attempt to use a deleted function
1354 | _LIBCPP_NOEXCEPT_RETURN(std::__invoke(std::forward(__f), std::get(std::forward(__t))...))
|

/usr/include/c++/v1/tuple:1358:29: error: no matching function for call to '__apply_tuple_impl'
1358 | _LIBCPP_NOEXCEPT_RETURN(std::__apply_tuple_impl(
| ^~~~~~~~~~~~~~~~~~~~~~~


Подробнее здесь: https://stackoverflow.com/questions/798 ... s-template
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»