Шаблонная функция is_in() (проверка, содержит ли массив строку) в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Шаблонная функция is_in() (проверка, содержит ли массив строку) в C++

Сообщение Anonymous »

Я хотел бы сделать следующее:

Код: Выделить всё

std::string b = "b";
is_in("a", { "a", "b", "c" });
is_in("d", { "a", "b", "c" });
is_in(b, { "a", "b", "c" }); // fails
is_in(b, std::array{ "a", "b", "c" });
с использованием шаблонов

Код: Выделить всё

template
bool is_in(const Element& e, const Container& c)
{
// https://stackoverflow.com/questions/20303821/how-to-check-if-string-is-in-array-of-strings
return std::find(std::begin(c), std::end(c), e) != std::end(c);
}

template
bool is_in(Element e, std::initializer_list l)
{
// return std::find(std::begin(l), std::end(l), e) != std::end(l);
return is_in(e, l);
}
но я получаю следующую ошибку (при использовании GCC 9.3.0):

Код: Выделить всё

no matching function for call to ‘is_in(std::string&,
)’
У кого-нибудь из знатоков шаблонов мозга есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/695 ... tring-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»