建议here通过以下方式实现:

template<class Ret, class... Args>
struct is_function<Ret(Args...)const> : std::true_type {};
template<class Ret, class... Args>
struct is_function<Ret(Args...)volatile> : std::true_type {};

但这是有效的函数语法吗? Visual Studio 2013给出错误:
error C2270: 'abstract declarator' : modifiers not allowed on nonmember functions

最佳答案

函数参数之后的constvolatile称为cv-qualifier-seq。
C++ 14标准的第8.3.5节第6段说:



在您的示例中,Ret(Args...)constRet(Args...)volatile满足最后一种情况。

关于c++ - 自己的std::is_function实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27594273/

10-13 07:05