[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