正確には以下の通りです。 #include <map> #include <memory> using KVPCollectionType = std::map<std::string, std::string>; class c { public: c(const KVPCollectionType&& kvps = {}){} }; int main() { auto ok = std::make_shared<c>(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK auto ng = std::make_shared<c>({{"key1", "value1"},{"key2","value2"}}); // NG!!! }