私が理解restrictしているように、関数内の特定のデータへの唯一の参照としてポインターをマークします。私は通常、関数パラメーターで使用されているのを目にしますが、これも有益なようです:
char *restrict a = get_some_string( );
char *restrict b = get_some_other_string( );
(したがって、コンパイラは変更が変更aされないことを認識しb、追加の最適化を行うことができます)。
get_some_string非常に複雑な型を返す場合は、autoキーワードを使用するのが最善のようです。
auto a = get_some_string( );
auto b = get_some_other_string( );
しかし、auto restrictトリガーを使用すると、「制限にはポインターが必要です」というエラーが発生します。では、これらをどのように組み合わせることができますか?
コメントにあるように、restrictC++ の標準キーワードではありません。#define restrict __restrict__プロジェクトに、GCC で動作する行があることを忘れていました。