[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
66
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) [sage] 2023/12/05(火) 11:22:18.93 ID:z5PiblaY0(1/4) AAS
>>63
63(2): デフォルトの名無しさん (ワッチョイ 791f-q5uF) [sage] 2023/12/05(火) 10:33:06.64 ID:HLoKrA0o0(1) AAS
ふと今更思ったんだけど
ポインターpに対して演算子*が返す*pは、
値じゃなくて参照?
ポインター p に対して *p とした場合の型は参照ではない。
たぶん >>64
64(1): デフォルトの名無しさん (ワッチョイ b501-sZSb) [sage] 2023/12/05(火) 11:05:15.15 ID:E3GJtsiR0(1/3) AAS
#include <type_traits>
#include <iostream>
using namespace std;
int main () {
int value {0};
int *p {&value};
cout << is_reference <int>::value << '\n';
cout << is_reference <int &>::value << '\n';
cout << is_reference <decltype (value)>::value << '\n';
cout << is_reference <decltype (*p)>::value << '\n';
return 0;
}
は *p が参照と言いたいつもりで書いているんだと思うけど
decltype に与えられる式の型が T 型の lvalue だった場合には T& が返されるルールなので
その式が参照でなくても参照が返されることがある。
68
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) [sage] 2023/12/05(火) 11:34:00.06 ID:z5PiblaY0(3/4) AAS
と思ってよく仕様を読んでみたらやっぱりこの (>>66) 考え方で正しいはず。

式が識別子式の時に限っては decltype は参照にならず式の型そのままで返すせいで decltype(value) は参照にならないが、
value と *p は型システム的にも値カテゴリ的にも同じだわ。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s