https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98939

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Does that mean that code like this (from type_traits) needs to be fixed?

  class __make_unsigned_selector_base
  {
  protected:
    template<typename...> struct _List { }; 

    template<typename _Tp, typename... _Up> 
      struct _List<_Tp, _Up...> : _List<_Up...>
      { static constexpr size_t __size = sizeof(_Tp); };

    template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
      struct __select;

    template<size_t _Sz, typename _Uint, typename... _UInts>
      struct __select<_Sz, _List<_Uint, _UInts...>, true>
      { using __type = _Uint; };

    template<size_t _Sz, typename _Uint, typename... _UInts>
      struct __select<_Sz, _List<_Uint, _UInts...>, false>
      : __select<_Sz, _List<_UInts...>>
      { }; 
  };

when parsing the default template argument I can't know if it can be parsed
right away or if I need to delay parsing (unless it's a simple literal, which
in this case it isn't).

Reply via email to