Концепты
От: enji  
Дата: 21.10.15 12:48
Оценка:
Наткнулся на интересную статью.

Довольно приятный синтаксис получается, заодно и шаблоны "очеловечили"

//-- шаблонная функция с концептами

template<typename R, typename T>
    requires Range<R>() 
          && Equality_comparable<T, Value_type<R>>()
  bool in(R const& range, T const& value);

// вариант 2

 template<Range R,
    Equality_comparable<Value_type<R>> T>
  bool in(R const& range, T const& value);


// вариант 3

 void sort(Sortable_container& c);

//-- пласехолдеры (вместо auto)

 for (Pointer iter = c.begin(); iter != c.end(); ++iter)
    // Do stuff


Кстати пишут, что компилятор не проверяет соответствие операций внутри функции с концептом. Т.е.

void sort(Sortable_container& c) { 
  cout << c;  // компилируется, хотя Sortable_container не требует операции вывода в поток
}


Ждем GCC 6
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.