如何解决为什么在 SFINAE 中调用函数没有歧义?
我正在使用 SFINAE 来检查某个类是否具有 'print()' 函数。代码有效,但为什么调用 has_print()
没有歧义?
class cls {
public:
void print() {
std::cout << "some text" << std::endl;
}
};
template<typename T>
auto has_print(T tt) -> decltype(T().print(),std::true_type()) {
tt.print();
return std::true_type();
}
std::false_type has_print(...) {
std::cout << "Doesn't contain print()" << std::endl;
return std::false_type();
}
int main() {
cls c;
has_print(c);
return 0;
}
它可以匹配两者。
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。