トップページ > プログラム > 2014年11月22日 > 18N8Upow

書き込み順位&時間帯一覧

6 位/210 ID中時間01234567891011121314151617181920212223Total
書き込み数0000002000001000000300006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part114
【初心者歓迎】C/C++室 Ver.93【環境依存OK】
C++14/C++1z 20

書き込みレス一覧

C++相談室 part114
616 :デフォルトの名無しさん[sage]:2014/11/22(土) 06:15:25.58 ID:18N8Upow
>>614
配列の宣言: std::size_tに変換可能な型
配列のインデックスアクセス:整数
ポインターの加減算:integral type

「integral type」はchar,intなどの整数型に加えwchar_t,bool などを含む。
【初心者歓迎】C/C++室 Ver.93【環境依存OK】
826 :デフォルトの名無しさん[sage]:2014/11/22(土) 06:23:30.95 ID:18N8Upow
>>823
>どのあたりが分っていないように見えますか?

newしたときに確保されるのは実メモリでなく仮想メモリだ。
仮想メモリにアクセスした際に実メモリへの割り当てが透過的に行われるけど
断じて「new=物理メモリ確保」ではない。
その証拠に搭載メモリより多くのメモリをnewする事が出来る
C++14/C++1z 20
67 :デフォルトの名無しさん[sage]:2014/11/22(土) 12:06:41.75 ID:18N8Upow
autoとdecltype周りはキーワードの使い回しが激しくて嫌です。

decltype(x) y; // 特定の型として使用
[](auto p){} // ジェネリックラムダです
auto y=x; // xから察して
decltype(auto) y=x; // decltype(x)から推論
auto f() -> int {} // 型の定義は後ろを見て
auto f() -> decltype(auto) {} //returnから推論
C++14/C++1z 20
71 :デフォルトの名無しさん[sage]:2014/11/22(土) 19:41:44.85 ID:18N8Upow
>>69
decltype(x)は
1.xが識別子っぽい時、その宣言をコピペ
2.識別子でないけどlvalue/rvalueの時はT&/T&&
3.それ以外は式xの型T

↓こんな感じ。
const struct A {
 int &&v;
} obj;
auto v2= obj.v; // int
decltype(obj.v) v2; //1に該当。int&&
decltype((obj.v)) v2;//カッコが付いて識別子でないので2に該当。const int &

int &f();
auto v2=f();//int
decltype( f() ); v2=f();//lvalueなので2に該当。int &

decltype( make_str() ) s=...; // prvalueなので3に該当。string
decltype( (const std::string)make_str() ) s=...; // 3に該当。const string
C++14/C++1z 20
72 :デフォルトの名無しさん[sage]:2014/11/22(土) 19:42:51.01 ID:18N8Upow
ごめん間違えた


識別子でないけどlvalue/rvalueの時はT&/T&&


識別子でないけどlvalue/xvalueの時はT&/T&&
C++14/C++1z 20
73 :デフォルトの名無しさん[sage]:2014/11/22(土) 19:59:50.92 ID:18N8Upow
典型的な違いをもう一つ。
void f(int && v) {
 auto v1 = v; // int 
 decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
 decltype(auto) v3 = (v); //式(v)は左辺値なのでint &
}


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。