https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96413
Bug ID: 96413 Summary: Is single parameter specialisation useful besides variadic template? Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: gogdizzy at qq dot com Target Milestone: --- I read some code from <any> in gcc 10.2.0 ``` // Manage in-place contained object. template<typename _Tp> struct _Manager_internal { static void _S_manage(_Op __which, const any* __anyp, _Arg* __arg); template<typename _Up> static void _S_create(_Storage& __storage, _Up&& __value) { void* __addr = &__storage._M_buffer; ::new (__addr) _Tp(std::forward<_Up>(__value)); } template<typename... _Args> static void _S_create(_Storage& __storage, _Args&&... __args) { void* __addr = &__storage._M_buffer; ::new (__addr) _Tp(std::forward<_Args>(__args)...); } }; ``` And I can't understand why there are two _S_create, the second is superset of the first, isn't it? Can we omit the first one?