谁能解释一下为什么这段代码对模板函数不正确,但对普通函数却运行良好。例如,如果我们用非模板函数替换 std::copy
,没问题。
如何更改代码并使其对模板和非模板函数都有效?
auto functionSpan = [](auto&& func, auto&&... args) {
auto t1 = std::chrono::high_resolution_clock::now();
std::forward<decltype(func)>(func)(std::forward<decltype(args)>(args)...);
auto t2 = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(t2-t1).count();
};
vector<int> vec {1,2,3,4,5,6,7,8,9};
functionSpan(std::copy, vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
最佳答案
std::copy 不引用单个函数。您需要指定 std::copy<Type>
关于c++ - lambda 类型推导失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348520/