__restrict в g++ и MSVC с синтаксисом массива

Я в процессе обновления критичных для производительности библиотек для использования restrict, как реализовано в C++11 g++ и MSVC с ключевым словом __restrict,

Есть много подпрограмм и функций, которые выглядят примерно так:

void f(float a[],float b[]);

В приведенном выше примере f это процедура, аргументы которой должны быть ограничены. К сожалению, насколько я могу судить, это невозможно при сохранении этого синтаксиса. Теперь ясно, что это можно переписать, используя указатели как:

void f(float*__restrict a,float*__restrict b);

Что здесь потеряно, так это семантический факт a а также b являются массивами (я предпочитаю использовать нотацию указателя для однозначных указателей и нотацию массива для указателей массива). Описательные имена аргументов (опущены выше) помогают, но только так.

Я хотел бы подтвердить, что объявление ограниченных переменных с использованием синтаксиса массива в настоящее время невозможно для этих компиляторов.

0 ответов

Другие вопросы по тегам