【问题标题】:Can range-v3 contains work on initializer list?range-v3 可以包含初始化列表的工作吗?
【发布时间】:2020-05-28 14:07:51
【问题描述】:

我很高兴 range-v3 终于添加了包含算法。 但我想如果我不必生产一个容器来让它工作。 考虑这个例子:

#include <range/v3/algorithm/contains.hpp>
enum class Status{
    OK, 
    TimedOut,
    TryAgain,
    PermanentFailure
};

bool f(Status s){
    std::array can_retry{Status::OK, Status::TimedOut};
    return ranges::contains(can_retry,s);
}
int main(){
    return f(Status::TryAgain);
}

在这里,我想将 {Status::OK, Status::TimedOut} 内联到对 contains 的调用中,但它失败了。 有没有办法做到这一点?

附:请不要关于我想要的代码的可维护性/可读性,这只是一个示例代码。 :)

【问题讨论】:

  • 你可以提出问题,要求他们添加一个默认模板参数,这样这段代码就可以工作了。

标签: c++ c++20 range-v3


【解决方案1】:

你应该能够像这样将你的两行 sn-p 内联成一个:

return ranges::contains(std::array{Status::Ok, Status::TimedOut}, s);

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多