45. 11 型推論
以下のように auto というキーワードを使うことで右辺から
自動的に型が推論され、変数定義を楽に書けるようになり
ます。
1
2
3
4
auto x = 5;
const auto *v = &x, u = 6;
static auto y = 0.0;
auto int r;
//
//
//
//
OK: x has type
OK: v has type
OK: y has type
error : auto is
int
const int*, u has type const int
double
not a storage -class - specifier
Working Draft, Standard for Programming Language C++(N3337) p149 より引用
59. さてこのように書くと、どう表示されるでしょうか。
1
2
3
4
5
6
7
8
9
10
11
12
int a = 1, b = 1, c = 1;
auto m1 = [a, &b, &c]() mutable {
auto m2 = [a, b, &c]() mutable {
std :: cout << a << b << c;
a = 4; b = 4; c = 4;
};
a = 3; b = 3; c = 3;
m2 ();
};
a = 2; b = 2; c = 2;
m1 ();
std :: cout << a << b << c;
Working Draft, Standard for Programming Language C++(N3337) p91 より引用
60. 15 演習問題
• 次のような設計でオブジェクティブにコーティングしてみ
よう!
– main 関数は標準入力から文字列を受け取って一文字つ
づ、オブジェクト A に投げる。
– オブジェクト A は一文字つづ渡されるデータを集約す
る。改行が送られてくるまではデータをプールしておい
て、改行が来たらまとめて文字列としてオブジェクト B
に投げる。
– オブジェクト B は投げられた文字列を単純に表示する。
• std::vector と std::shared ptr の仕様を各自調べて、
practice::vector と practice::shared ptr を作ってみよう!