Looking at the GNU g++ 4.8.4 type_traits
header code I've found the definition for the std::is_function
template. It includes some template specializations such as this:
template<typename _Res, typename... _ArgTypes>
struct is_function<_Res(_ArgTypes...) const>
: public true_type { };
Specializations for volatile
and const volatile
functions are also there.
It is known that only member functions can be declared cv-qualified. So what do these specializations match? Is this a GNU extension?