私はrestrict
、キーワード を使用して g++ および MSVC によって C++11 に実装されているように、使用するパフォーマンス クリティカルなライブラリを更新中です__restrict
。
次のような多くのルーチンと関数があります。
void f(float a[],float b[]);
上記の例でf
は、引数を制限する必要があるルーチンです。残念ながら、私が知る限り、その構文を維持しながらこれを行うことは不可能です。さて、明らかにこれはポインターを使用して次のように書き直すことができます。
void f(float*__restrict a,float*__restrict b);
ここで失われたのは、a
とb
が配列であるというセマンティックな事実です (私は、単一値ポインターにはポインター表記を使用し、配列ポインターには配列表記を使用することを好みます)。説明的な引数名 (上では省略) は役に立ちますが、それだけです。
配列構文を使用して制限された変数を宣言することは、現時点ではこれらのコンパイラでは不可能であることを確認したいと思います。