|
■No24073 (ネタ好き未記入 さん) に返信 > 皆さん情報有難うございます。すごく勉強になります。 > 774RRさんの証明もためしました。 > Boost凄いですね。チャンとエラーが出る! > (もしかして普通だったかな?) >
勘違いしてたらごめんなさい。
ここのことですか? > std::cout << &hint.get() << std::endl; // error! rvalue のアドレスを取ろうとした > std::cout << &hstr.get() << std::endl; // ok! == &hstr.data ここのことだったらBoost云々じゃなくてC++レベルの話です。
int ret_value() { return 1; } int& ret_ref() { static int a; return a; } の2つの関数を用意して cout << &ret_value() << endl; // エラー cout << &ret_ref() << endl; // 通る でも同様にエラーが出るから。 整数値'1'のアドレスは取得できないけど、参照って様は(*value)だから。 &(*value)のアドレスは取得できますよね。
int* ret_ptr() { static int a; return &a; } という関数を用意して cout << &ret_ptr() << endl; // エラー(ポインタ値のアドレスは取れない) cout << &(*ret_ptr()) << endl; // 通る っていうのと同じことです。
|