https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89416
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Thu Feb 21 20:47:43 2019 New Revision: 269075 URL: https://gcc.gnu.org/viewcvs?rev=269075&root=gcc&view=rev Log: PR libstdc++/89416 fix __is_move_insertable trait The common base class for __is_move_insertable and __is_copy_insertable instantiates both the copy and move tests, when only one is needed. The unneeded one might cause errors outside the immediate context. The solution used in this patch is to replace them with alias templates, which will only be instantiated as needed. PR libstdc++/89416 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace class template with class. Replace move and copy member types with member alias templates, so they are only instantiated when needed. (__is_copy_insertable, __is_move_insertable): Adjust base class. * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable test for C++11/14/17 as well. * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New test. Added: trunk/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/alloc_traits.h trunk/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc