template<typename KType, typename PType = std::less<KType>, typename AllocType = std::allocator<KType>> class MySet { public: typedef std::set<KType, PType, AllocType> set_type; typedef typename set_type::iterator iterator; typedef typename set_type::const_iterator const_iterator; MySet(std::initializer_list<KType> _Ilist): s(_Ilist) { } template <class... Args> iterator emplace_hint(const_iterator hint, Args&&... args) { return s.emplace_hint(hint, std::forward<Args>(args)...); } const_iterator cbegin() const { return s.cbegin(); } private: set_type s; }; //main MySet<int> x { 1, 2, 3 }; x.emplace_hint(x.cbegin(), 4); // OK x.emplace_hint(x.cbegin(), 5, 6, 7); // выдаёт ошибку Error C2440 'initializing': cannot convert from 'initializer list' to 'int'