#include <iostream>
#include <map>
#include <string>
struct end_init_t { };
end_init_t end_init;
template <typename Key, typename Value, typename Compare = std::less<Key>,
typename Allocator = std::allocator<std::pair<const Key, Value> > >
class map_initializer
{
public:
typedef typename std::map<Key, Value, Compare, Allocator> map_t;
map_initializer() { }
map_initializer &operator,(const std::pair<Key, Value> &pair)
{
_map.insert(pair);
return *this;
}
map_t operator,(end_init_t)
{
return _map;
}
private:
map_t _map;
};
const std::map<std::string, std::string> mymap = (
map_initializer<std::string, std::string>(),
std::make_pair("fruit", "apple"),
std::make_pair("language", "c++"),
end_init);
int main()
{
std::cout << mymap.find("fruit")->second << std::endl;
}