Any*_*orn 7 c++ templates class type-traits
可能重复:
是否可以编写C++模板来检查函数是否存在?
是否可以使用boost类型特征或某些其他机制来检查特定模板参数是否具有运算符/函数,例如,std::vector作为模板参数具有operator[],而std::pair不是.
Geo*_*che 15
你无法通过类型特征解决这个问题,因为你必须为每个可能的名称定义.
下面列出了常见的解决方案,但有一个问题:许多STL实现将公共代码放在基类中,并且此方法不检查继承的名称.
如果您还需要检查继承的成员,请参阅此处.答案提供了一个解决方案,用于检查相关类是否具有该名称的成员,还可以检查const-ness和参数计数.然而,它无法检查包括参数和返回类型的完整签名,并且成员可见性没有区别.你应该能够通过使用链接来解决这个问题is_call_possible<>(还没有时间看看它).