【发布时间】:2020-11-11 21:47:11
【问题描述】:
考虑一下这段代码sn-p
#include <chrono>
auto wrapAndCallLambda =
[] (auto fn, auto &&... params)
{
const auto start = std::chrono::system_clock::now();
auto result = fn(std::forward<decltype(params)>(params)...);
const auto end = std::chrono::system_clock::now();
const auto elapsed = end - start;
std::cout << "Elapsed time: " << elapsed.count() << "s";
return result;
};
template <typename Fn, typename... Args>
auto wrapAndCall(Fn fn, Args &&... params)
{
const auto start = std::chrono::system_clock::now();
auto result = fn(std::forward<decltype(params)>(params)...);
const auto end = std::chrono::system_clock::now();
const auto elapsed = end - start;
std::cout << "Elapsed time: " << elapsed.count() << "s";
return result;
}
是否严格等价?是否有任何考虑(与观点和风格无关)指导选择哪一个? 代码臃肿? 表演? 如果广泛使用,编译时间?
【问题讨论】:
标签: c++