次のようなプロトタイプで関数を書きたいのですが
void fun(Thing *one, Thing *two, Thing *ret);
またはret
によってエイリアスされる場合とされない場合があるという事実を検討したいと思います。これは、必要に応じて実行時に決定し、適切なコードを呼び出す必要があります。one
two
これは悪い考えですか?これを持つための言語セマンティクスはありますか?
編集:私は、自然に機能するように手でテストしたくないことを明確にしませんでしたが、私にif (one == ret || two == ret)
は非常に冗長に見えます。また、ほぼ同じ2つのケースでコードが重複することは望ましくありません(修飾子のみが異なります)。私は、慣用的に良い解決策が何であるか、そしてそのような場合をサポートする言語セマンティクスがあるかどうかをもっと探しています。