https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61182
--- Comment #9 from Daniel Krügler <daniel.kruegler at googlemail dot com> ---
(In reply to Jonathan Wakely from comment #7)
> And Boost. I have to wonder why their remove_const is so much more
> complicated than ours:
>
> template<typename _Tp>
> struct remove_const
> { typedef _Tp type; };
>
> template<typename _Tp>
> struct remove_const<_Tp const>
> { typedef _Tp type; };
>
> That doesn't need to form a pointer then remove it again, so works with
> function types.
I don' think that this specialization can - according to the language - remove
const qualifiers of function types, because there is no const-qualifier to
remove. As far as I remember the core language makes this possible when
rewriting the specialization to be one for a function type, as of core wording
resolution
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#547