[Bug c++/97174] out-of-namespace function definition

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 23 09:04:24 GMT 2020


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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Right, the redefinition is dependent and we don't check it until instantiation.
That's allowed by the standard.

Reduced:

template<typename T> struct make_dependent { using type = T; };
template<typename T> using make_dependent_t = typename make_dependent<T>::type;

namespace N {
template <typename T>
make_dependent_t<T> conv (T);
}

template <typename T>
long N::conv (T val)
{ return static_cast<long>(val); }


Or simply:


template<typename T> struct make_dependent { using type = T; };
template<typename T> using make_dependent_t = typename make_dependent<T>::type;

template <typename T>
make_dependent_t<T> conv (T);

template <typename T>
long ::conv (T val)
{ return static_cast<long>(val); }


More information about the Gcc-bugs mailing list