Type functions для зависимых типов.

d-yaroshev
d-yaroshev

При написании любого шаблонного кода, возникает необходимость писать одни и теже helpers:

template <typename C>
using Iterator = typename C::iterator;

template <typename I>
using ValueType = typename std::iterator_traits<I>::value_type;

template <typename I>
using Reference = typename std::iterator_traits<I>::reference;

Очень надоедает, особенно если есть несколько разных Concepts с которыми приходится работать (контейнеры, аллокаторы, указатели).

Хотелось бы иметь стандартное решение.

С Concepts оно должно реализовываться достаточно просто. 

 

0
рейтинг
2 комментария
yndx-antoshkka
Не очень понял, что именно вы предлагаете?
yndx-antoshkka
d-yaroshev
@Антон

Виноват, если не понятно получилось.
При написании алгоритмов часто возникает необходимость обращаться к зависимым типам:
difference_type, value_type etc.

Эти типы надо доставать через traits, причем для разных концептов это разные traits, те если нужно работать с аллокаторами, итераторами и контейнерами, начинается страдание.

Было бы не плохо иметь type functions которые бы делали то что надо и были короткие.

Что-нибудь:

```
template <typename I>
requires Iterator<I>
std::difference_type<I> count_all_entries(I f, I l, std::const_ref<I> v);
```

```
template<typename A, typename I>
requires Allocator<A> && Iterator<I>
void allocate_with_padding(A& a, I f, I l, std::size_type<A> padding);
```
d-yaroshev
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения