https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84283
--- Comment #2 from Liu Hao <lh_mouse at 126 dot com> --- Ditto, but even more reduced: ---------- #include <type_traits> template<typename Key> struct map { template<typename Pair, typename = typename std::enable_if<std::is_constructible<int, Pair&&>::value>::type> void * insert(void * pos, Pair&& x); template<typename Iterator> void insert(Iterator first, Iterator last); }; template<typename IdType> struct map_type_to_map : map<IdType> { void add() { void * ptr = 0; map<int> current_values; current_values.insert(ptr, ptr); } };