Код в main()
вызывает функцию my_map_list_of()
, которая возвращает объект map_list_of_type
:
my_map_list_of(1, 'a')
Затем для возвращаемого объекта вызывается map_list_of_type::operator()
.Эта функция возвращает тот же объект.
my_map_list_of(1, 'a') (2, 'b');
^^^^^^^^
И map_list_of_type::operator()
снова вызывается для вновь возвращаемого объекта.
my_map_list_of(1, 'a') (2, 'b') (3, 'c');
^^^^^^^^
Затем, map_list_of_type::operator Map const&()
вызывается неявно, потому что это назначение требуетЭто.Объект map_list_of_type<int,char>
преобразуется в std::map<int,char>
std::map<int, char> example = my_map_list_of(1, 'a') (2, 'b') (3, 'c');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^