我想用下面的模板成員函數C++ 11:創建一個函數總是返回true,使用的函數參數
template <typename Entity>
class SomeCollection
{
// ....
template <typename Measure, typename Filter>
Entity maximalEntity(Measure&& measure, Filter&& requirement)
{
auto maxEntity = Entity();
auto maxValue = -std::numeric_limits<double>::infinity();
for (auto ent /* some iteration method*/)
{
auto measurement = measure(ent);
if (requirement(ent) && measurement > maxValue)
std::tie(maxEntity, maxValue) = std::make_tuple { ent, measurement };
}
return maxEntity;
}
// ...
};
什麼是調用從客戶這個功能最好的辦法最簡單的方法沒有過濾器要求的代碼(只有最大元素)?
我能想出是最好的:
class Something;
double measure(Something&);
SomeCollection<Something> collection;
auto maximum = collection.maximalEntity(measure, [](const Something&) { return true; });
,但我想這個lambda函數可以改善沒有?
偉大的答案。只是挑剔(或者可能是風格問題):在C++ 11版本中,您可以創建'struct always_true_t',然後'const always_true_t always_true' – bolov