Концепты
От: 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
Re: Концепты
От: Evgeny.Panasyuk Россия  
Дата: 21.10.15 13:15
Оценка:
Здравствуйте, enji, Вы писали:

E>Ждем GCC 6


Есть патч с proof-of-concept'ом — http://rsdn.ru/forum/cpp/5114185.flat
Автор: Evgeny.Panasyuk
Дата: 27.03.13
Re[2]: Концепты
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 25.10.15 12:32
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Есть патч с proof-of-concept'ом — http://rsdn.ru/forum/cpp/5114185.flat
Автор: Evgeny.Panasyuk
Дата: 27.03.13

А сколько вони было, когда 11 стандарт принимали -- сложно, не нужно, блаблабла. Хотя на первый взгляд, приняли как есть.
<Подпись удалена модератором>
Re[3]: Концепты
От: Evgeny.Panasyuk Россия  
Дата: 25.10.15 13:24
Оценка: 6 (1)
Здравствуйте, С3141566=Z, Вы писали:

EP>>Есть патч с proof-of-concept'ом — http://rsdn.ru/forum/cpp/5114185.flat
Автор: Evgeny.Panasyuk
Дата: 27.03.13

СZ>А сколько вони было, когда 11 стандарт принимали -- сложно, не нужно, блаблабла. Хотя на первый взгляд, приняли как есть.

Не, сейчас это сильно облегченная и кардинально переработанная версия. Это по сути enable_if + has_member* на стероидах — проверка синтаксических требований, разбиение на атомы, перегрузка по ним и сахар для объявления шаблонов функций.
Нет например concept map'ов и проверки тел шаблонов на предмет того чтобы они не использовали лишнего (того чего нет в требованиях).
http://www.youtube.com/watch?v=0avh39CI_ls
http://www.youtube.com/watch?v=WmxhlPXJ-OM
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.