More Related Content
PDF
PPTX
Multiple optimization and Non-dominated sorting with rPref package in R PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall PDF
PDF
PDF
PDF
PDF
What's hot
PDF
ユーザーデータ基盤を1からScalaでつくった話し PPTX
PDF
PPTX
PDF
PDF
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder) PDF
PPTX
PDF
PDF
ODP
PDF
PPTX
PDF
UnityのクラッシュをBacktraceでデバッグしよう! PDF
【チュートリアル】コンピュータビジョンによる動画認識 PDF
ARM CPUにおけるSIMDを用いた高速計算入門 PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話 PPTX
PPTX
Viewers also liked
PDF
PDF
PDF
PPTX
PDF
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ PDF
PDF
PDF
PDF
ODP
PPTX
PDF
ODP
PDF
カスタムメモリマネージャと高速なメモリアロケータについて PDF
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜 PDF
【 #Unity会 】このUnityがすごい2015年版 Similar to 左と右の話
PDF
PDF
PPTX
Boost.PropertyMap (.pptx) PDF
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」 PDF
PDF
PPTX
Cranberries interval library 開発の話 PPTX
PPTX
AtCoder Beginner Contest 004 解説 PPTX
PDF
PPTX
AtCoder Beginner Contest 012 解説 PDF
Adding simpl GVN path into GHC PPTX
Introduction to programming PDF
C++0x in programming competition PDF
PDF
PFI Christmas seminar 2009 PDF
Data-Intensive Text Processing with MapReduce ch4 PPT
融合変換による最適化の理論的基盤と正当性 (2006-06-27) PDF
左と右の話
- 1.
- 2.
- 3.
- 4.
i
int &f();f() 全て規格に
4
左辺値・右辺値とは
全ての式がおのおの持つ属性
左辺値となる式
右辺値となる式
42, i + j
int g(); g()
MyClass(arg)
書いてある
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
20
式の左辺値・右辺値に関する
2つの視点とL-to-R変換
ある式が左辺値
である
右辺値
である
出現して
いる文脈
で
左辺値である
ことが要求さ
れている
そのま
まで
O.K.
コンパ
イルエ
ラー
右辺値である
ことが要求さ
れている
L-to-R
変換が
起きる
そのま
まで
O.K.
- 21.
21
式の左辺値・右辺値に関する
2つの視点とL-to-R変換
ある式が左辺値
である
右辺値
である
出現して
いる文脈
で
左辺値である
ことが要求さ
れている
そのま
まで
O.K.
コンパ
イルエ
ラー
右辺値である
ことが要求さ
れている
L-to-R
変換が
起きる
そのま
まで
O.K.
&42
42=0
- 22.
22
全ては規格のシナリオ通りに
•式自身が左辺値か右辺値か
⇒全て規格に書いてある
• 個々の文脈で式に左辺値・
右辺値のどちらが要求されるか
⇒全て規格に書いてある
• いつ左辺値から右辺値への
変換が起きるか
⇒全て上2つから判断できる
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
28
例:型の完全な定義が
いつ必要になるか?
左辺値から右辺値への変換が起きた
オブジェクトの型は完全でなければならない
class X;
void f(X &x) {
セーフ
&x;
static_cast<X>(x);
} アウト
- 29.
29
例:変数の定義がいつ必要に
なる(odr-usedされる)か?
変数がコード中に出現すればodr-used
ただし,変数がconstant expression であり
即座にL-to-R 変換が起きる場合は対象外
Template<typename T>
struct X {
static constexpr int i = 42;
};
int j = i + 1;
int *p = &i;
アウト
セーフ
- 30.
- 31.
- 32.
- 33.
xvalue, prvalue,
glvalueの話はどこに行った?
“Location” の
意味を持つか
寿命が短い
lvaue Yes No
xvalue Yes Yes
prvalue No Yes
move semantics, 右辺値参照で
重要な左と右の境界
- 34.
まとめ:
• 左辺値とは何か,右辺値とは何か
• 左辺値から右辺値への変換とは何か,それは
いつ起きるのか
• 左辺値から右辺値への変換がいつ起きるのか
は様々なコーナーケースでの判断に重要
• 左辺値と右辺値の区別はmove semantics,
右辺値参照の話でも重要だが,本発表での左
辺値と右辺値の区別の場合と境界線が異なる
34