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

解决 Sourcetree 报错 Couldn't posix_spawn: error 2 问题

adb传输文件报错couldn‘t create file:Read-only file system