Может ли range-v3 содержать работу над списком инициализаторов? - PullRequest
2 голосов
/ 13 февраля 2020

Я очень рад, что 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} в вызов содержимого, но это не удалось. Есть ли способ сделать это?

PS Пожалуйста, без комментариев по поводу удобства обслуживания / читаемости кода, который я хочу, это просто пример кода. :)

1 Ответ

3 голосов
/ 13 февраля 2020

Вы должны иметь возможность встроить свой двухстрочный фрагмент в один пример:

return ranges::contains(std::array{Status::Ok, Status::TimedOut}, s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...