Re[4]: Синтаксический сахар: x in (a,b,c)
От: rg45 СССР  
Дата: 18.02.20 10:02
Оценка:
Здравствуйте, MarcoPolo, Вы писали:

MP>Независимо от вас написал

MP>
MP>template<typename T>
MP>bool in_list(T x, T v) {
MP>  return x == v;
MP>}

MP>template<typename T, typename... Args>
MP>bool in_list(T x, T first, Args... args) {
MP>  return x == first || in_list(x, args...);
MP>}
MP>


Для того, чтобы поддержать пустые списки, лучше написать чуть по-другому:

template<typename T>
bool in_list(T&&) {
  return false;
}

template<typename T, typename... Args>
bool in_list(T&& x, T&& first, Args&&... args) {
  return x == first || in_list(x, args...);
}


Ну и параметры лучше принимать по ссылкам, все-таки — чтобы работало и для некопируемых/неперемещаемых типов.
--
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.