boost::my_map_list_of
の機能を理解する上で問題があります。特にこの部分:boost :: my_map_list_of
operator Map const&() const { return data; }
どのように動作するか説明できますか?このようにして作成されたマップは、コンパイル時に初期化されますか?以下
全体ブーストある:my_map_list_of()コード:map_list_of_type::operator()
が呼び出され、その後
my_map_list_of(1, 'a')
:
template<class K, class V>
struct map_list_of_type {
typedef std::map<K, V> Map;
Map data;
map_list_of_type(K k, V v) { data[k] = v; }
map_list_of_type& operator()(K k, V v) { data[k] = v; return *this; }
operator Map const&() const { return data; }
};
template<class K, class V>
map_list_of_type<K, V> my_map_list_of(K k, V v) {
return map_list_of_type<K, V>(k, v);
}
int main() {
std::map<int, char> example =
my_map_list_of(1, 'a') (2, 'b') (3, 'c');
cout << example << '\n';
}
に変換され、これは廃止されました。 C言語11では 'std :: mapの例を{{1、 'a'}、{2、 'b'}};などと書くことができます。 –
Kerrek SB:初期化リストはMSVC、I –
@ViktorSehr: "obsolescent"、おそらく... –