【发布时间】:2021-12-27 05:54:05
【问题描述】:
取如下函数:
template<typename T>
decltype(auto) find_median(T begin,
T end,
bool sorted = false,
auto comparison = [](auto a, auto b){return a < b;}){
assert(begin != nullptr);
assert(end != nullptr);
return sorted ? find_median_sorted(begin, end) : find_median_unsorted(begin, end, comparison);
}
请注意,我将comparison 参数设置为默认值[](auto a, auto b){return a < b;}。所以如果我这样调用这个函数:find_median(std::addressof(arr), std::addressof(arr[9])) 其中arr 是std::array,这应该可以工作。但它不起作用,有人能告诉我为什么吗?
【问题讨论】:
标签: c++ templates lambda c++20