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?

Reply via email to