【发布时间】:2015-10-14 20:48:44
【问题描述】:
我只是尝试为给定的std::bind 创建一个std::packaged_task。
#include <functional>
#include <future>
class A
{
public:
template<class T>
void execute(T func)
{
std::packaged_task<T> task(func);
}
};
int main()
{
auto func = std::bind([](int x) { return x*x; }, 5);
A name;
name.execute(func);
}
main.cpp: 在 'void A::execute(T) [with T = std::_Bind(int)>]': main.cpp:20:20: 必需 从这里 main.cpp:10:36: 错误: 'std::packaged_task(int)>> 任务'有 不完全类型 std::packaged_task task(func);
我正在使用 G++ 5.2.0 和 C++14。
有人有想法吗?
谢谢,
【问题讨论】:
-
应该如何调用
func?如果有的话,它应该返回什么? -
auto不允许在参数声明中。 -
问题是它不能编译
-
T.C,它应该返回任何东西,取决于 std::bind
-
我在您的代码中看到了一堆与您的问题几乎完全无关的问题。您对
auto的使用不符合 C++11。您对decltype的使用向我表明您不知道它的作用。我不确定“理论上这应该如何工作”对您意味着什么。你也不明白 T.C. 的问题:传入的func,你希望它怎么调用?你希望传递一个整数吗?没有?一个字符串?三只鸡和一只山羊?std::bind的结果没有回答问题。
标签: c++ c++11 c++14 generic-programming