Добавить ключевое слово restrict в С++

Игорь Шаповал
Игорь Шаповал

В С99 было добавлено ключевое слово restrict. Оно применимо только к указателям.

restrict позволяет указать, что объявляемый указатель указывает на блок памяти, на который не указывает никакой другой указатель.

В разных компиляторах уже добавили аналогичные ключевые слова для С++:

GCC: __restrict, __restrict__

Clang: __restrict__

Как пример можно посмотреть стандартную функцию std::memcpy

extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
		     size_t __n) __THROW __nonnull ((1, 2));

Было бы не плохо иметь в С++ стандартную поддержку.

 

 

 

9
рейтинг
5 комментариев
Иван

Интересно, в c++ ведь нет встроенных динамических массивов, их приходится реализовывать вручную, на указателях, с ручным управлением памятью. Чтобы сделать это оптимально, нужен этот самый restrict и realloc (Возможность realloc). В Си restrict ввели еще в C99. И я так понимаю, есть весомые причины, из-за которых они до сих пор не в стандарте C++?

Иван
Обновлено 
yndx-antoshkka

Иван, но зачем это всё писать самому, если есть std::vector?

yndx-antoshkka
Иван

yndx-antoshkka, std::vector, если я не ошибаюсь, при вставке в начало и в конец при capacity == size, и при освобождении памяти с начала и с конца, всегда производит переаллокацию. Т.е. работает с памятью очень неэффективно. STL мне впринципе не достаточно...

Иван
Обновлено 
yndx-antoshkka

Работа над этой идеей велась и даже были предложения

Последние пару лет работа затихла, люди занимавшиеся проработкой идеи отвлеклись на рефлексию и constexpr.

Если чувствуете в себе силы - посмотрите предложение, постарайтесь его улучшить, и попробуем поторопить события.

yndx-antoshkka
Саша Зайцев

yndx-antoshkka, я совсем недавно спрашивал на std-proposals о судьбе пропозала - пока что тишина. И на самом деле там довольно много открытых вопросов по поводу restrict. Кому интересно - просто почитайте полностью самый последний на текущий момент proposal по данной теме.

Саша Зайцев
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения