ブレースによる初期化と初期化リスト
#include <iostream> struct hoge_type{ hoge_type(int){ std::cout<<"A\n"; } hoge_type(std::initializer_list<int>&&){ std::cout<<"B\n"; } }; int main(){ int v = 1; auto a = hoge_type(v); auto b = hoge_type(std::move(v)); auto c = hoge_type{v}; auto d = hoge_type{std::move(v)}; auto e = hoge_type{{v}}; }
さて、上記コードの実行結果はどうなるでしょう?
わかるかな??
答えは…
↓
↓
↓
まあ、ちゃんと考えてから見てね!
↓
↓
↓
いやまあ、 ideone にリンクするんだけど・w・
http://ideone.com/HJX8I
↓
↓
↓
と、いうわけで答えは、
A
A
B
B
B
でした☆彡
大丈夫、間違えなかったかな?