C++类型特征,用于检查类是否具有运算符/成员

Any*_*orn 7 c++ templates class type-traits

可能重复:
是否可以编写C++模板来检查函数是否存在?

是否可以使用boost类型特征或某些其他机制来检查特定模板参数是否具有运算符/函数,例如,std::vector作为模板参数具有operator[],而std::pair不是.

Geo*_*che 15

你无法通过类型特征解决这个问题,因为你必须为每个可能的名称定义.

下面列出了常见的解决方案,但有一个问题:许多STL实现将公共代码放在基类中,并且此方法不检查继承的名称.

如果您还需要检查继承的成员,请参阅此处.答案提供了一个解决方案,用于检查相关类是否具有该名称的成员,还可以检查const-ness和参数计数.然而,它无法检查包括参数和返回类型的完整签名,并且成员可见性没有区别.你应该能够通过使用链接来解决这个问题is_call_possible<>(还没有时间看看它).

  • 每当我看到`is_call_possible`线程时,我就会害怕一点点. (4认同)
  • 新密码https://github.com/jaredhoberock/is_call_possible. (4认同)