オーバーテクノロジー:How to know which functhion is actually called among Overloaded Function set at the Compilation Time?
真夜中に、闇のC++erはおそろしいサバトを開催していたようです…
Akso de la Malbono
@Cryolite
関数のパラメタや関数の戻り値を braced-init-list で初期化するのは copy-list-initialization で,自分の理解が間違っていなければこれらは直接相手先のコンストラクタを呼ぶので初期化対象が Copyable/Movable でなくて良いはず.
2010-06-05 02:10:04
隅須正昭
@nagoya313
なんですと!? RT @SubaruG あぁ、そういえば explicit な多引数コンストラクタって意味を持つようになったんだっけか。
2010-06-05 02:12:16
Norihisa Fujita, ぽん
@fjnli
struct {int x; int y;}; のような型に対しては {1,2} で初期化できるんだけど。
2010-06-05 02:12:57
Norihisa Fujita, ぽん
@fjnli
@SubaruG しかしstd::tupleはついてますね。std::make_tupleを使えということですか
2010-06-05 02:19:16
隅須正昭
@nagoya313
1変数の時は暗黙型変換を阻止したいことが多いからexplicit付けることになると思うけどそうすると1変数のときだけ{}で初期化できないという体系が出来てしまうような・・・。
2010-06-05 02:20:12
Yak!
@yak_ex
@nagoya313 今 n3092 見ただけですが、explit 無しのコンストラクタが抑止されるのは copy-list-initialization の時だけで direct-list-initialization の時は呼べる見たいです。
2010-06-05 02:25:12
Yak!
@yak_ex
いわゆる「C++ で最も奇妙な解析」(一時オブジェクトを伴う関数呼び出しのつもりが関数宣言として解釈される奴)も () じゃなくて {} で書けば回避可能ってことかな?
2010-06-05 02:35:44