私は恐ろしい質問だと恐れていますが...参照変数ではない代入を禁止する方法は?
誰かが、関数(またはメソッド)からの戻り値を強制的に内部の静的変数またはクラス/構造体は、参照変数にのみ割り当てられますか?
私は最小限の例で私が望むものを説明しようとします。内部静的変数への参照を返す関数wrapValue()
と次のコードを、与えられ
、
int & wrapValue (int v0)
{
static int val;
return val = v0;
}
int main()
{
// how to permit this ...
int & v0 { wrapValue(0) };
// ... but forbid this ...
int v1 { wrapValue(1) };
int v2;
// ... and this ?
v2 = wrapValue(2);
}
v0
の初期化を可能にする方法がある(静的変数にv0
に結合)とv1
の初期化と、(スタティック変数に境界線なし)(v1
とv2
)を禁止しますか?
現在のC++標準では不可能なことがあれば、誰かが私に代わりの方法を提案することができます(あまりにも複雑ではありません:私はライブラリでそれを使いたいと思っています) ?
あなたがしたいのはなぜ?彼らがあなたの戻り値で何をするかはあなたの発信者次第ですか? –
おそらく、値をコピーしたり、移動したり構築したりしたくないのでしょうか?あるいは動かなかったのだろうか? – wally
@AlanStokes - 問題は、ユーザが単純な(参照ではない)値で、私が開発したメソッド(argc/argvの値解析のオプションのクラス)によって返された値を入れた場合、次に、解析されます。たぶんそれは愚かな考えですが、ユーザーが '&'を覚えていればうまくいくようです。私は英語では悪いので、説明するのは難しいです...興味があれば(Stack Overflowのルールによれば正しいですか?)、私はgithubプロジェクトへのリンクを書くことができます。 – max66