C++ 编译报错:couldn’t deduce template parameter ‘xxx’(模板参数推导失败)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 编译报错:couldn’t deduce template parameter ‘xxx’(模板参数推导失败)相关的知识,希望对你有一定的参考价值。
一般可能是模板可变参数没写对
这里给个正确能编译运行的代码参考:
// 下面是一个使用std::future<Ret> 的完整使用案例
#include <iostream>
#include <future>
#include <chrono>
int add(int a, int b) // 定义求和函数
std::cout << "process add for 2 seconds..." << std::endl;
std::this_thread::sleep_for (std::chrono::seconds(2));
return a + b;
template <typename Ret, typename Func, typename ... Arg> // 定义泛型函数
Ret AsyncCallback(Func f, Arg ... arg)
std::packaged_task<Ret(Arg ...)> task(f); // 创建一个std::packaged_task对象
std::future<Ret> future = task.get_future(); // 获取函数的返回值
std::cout << "thread start" << std::endl;
std::thread t(std::move(task), arg ...); // 创建线程执行函数
//t.join(); // 等待线程结束 //必须显示join或detach子线程,否则后面future.get就会报错,不知道什么原因
t.detach();
//do something...
std::cout << "do something for 1 second..." << std::endl;
std::this_thread::sleep_for (std::chrono::seconds(1));
std::cout << "future.get()..." << std::endl;
return future.get();
int main()
int result = AsyncCallback<int>(add, 5, 10); // 调用AsyncCallback函数
std::cout << "Result of add is: " << result << std::endl;
return 0;
编译运行结果:
以上是关于C++ 编译报错:couldn’t deduce template parameter ‘xxx’(模板参数推导失败)的主要内容,如果未能解决你的问题,请参考以下文章
Couldn't load libPassword from loader:NDK开发中C文件编译成cpu的so类库时,找不到类库报错的原因之一
quartz报错 Couldn't retrieve job because the BLOB couldn't be deserialized: null
关于Apache报错 couldn't perform authentication. AuthType not set!
xcode工程编译错误:error: Couldn’t materialize