Я знаю, что __retrict __ не является стандартным C ++ и вместо этого является расширением C99, которое поддерживает GCC (предыдущий вопрос: неопределенность GCC __restritce__)
Однако, если мы сделаем некоторые предположения:
- Стандарт: C ++ 17 или больше (если это имеет значение)
Вопрос : Считается ли следующий код нарушает правила __retrict __ ?
Edit : более конкретно, вызывает ли реализация лямбды в том смысле, что A_PTR (или a_ref ) вне лямбды и внутри лямбда являются разными идентификаторами к одной и той же памяти, что нарушает правила __restritce __ ?
Код: Выделить всё
#include
void foo(int* __restrict__ a_ptr) {
[ a_ptr]() { *a_ptr = 1; std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79601099/can-a-restrict-pointer-be-captured-by-a-lambda[/url]