関数が const 以外の参照を引数として受け取る場合、呼び出し側ではどの入力が変更される可能性があるかが明らかでないため、読みにくいコードが作成される可能性があります。これにより、代わりにポインターを使用することを強制するいくつかのコード規則が導かれました。たとえば、
void func(int input, int* output);
int input = 1, output = 0;
func(input, &output);
それ以外の
void func(int input, int& output);
int input = 1, output = 0;
func(input, output);
個人的には、null をチェックする必要があるため、ポインターの使用は嫌いです。これにより、次のように、boost::ref (または C++11 の場合は std::ref) を使用して意図を通知できるかどうか疑問に思いました。
void func(int input, int& output);
int input = 1, output = 0;
func(input, boost::ref(output));
これは、会社のコーディング規約として使用されます。私の質問は、これが良い考えではない理由はありますか?