私が理解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
トリガーを使用すると、「制限にはポインターが必要です」というエラーが発生します。では、これらをどのように組み合わせることができますか?
コメントにあるように、restrict
C++ の標準キーワードではありません。#define restrict __restrict__
プロジェクトに、GCC で動作する行があることを忘れていました。