建议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
最佳答案
函数参数之后的const
或volatile
称为cv-qualifier-seq。
C++ 14标准的第8.3.5节第6段说:
在您的示例中,Ret(Args...)const
和Ret(Args...)volatile
满足最后一种情况。
关于c++ - 自己的std::is_function实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27594273/