测试是否存在 std::ostream 运算符<<通过 SFINAE GCC 错误?
我决定尝试一下替换失败不是错误 (SFINAE)用于测试是否为自定义类型定义了全局运算符<< 的代码。 堆栈溢出问题SFINAE + sizeof = 检测表达式是否编译 …
C++ 中的可移植 typeof()使用SFINAE?
可能的重复: C++03 中缺少 typeof 运算符? 是否可以使用模板在 C++0x 之前的 C++ 中可移植获取表达式的编译时类型? 类似于: int foo() { return …
MSVC10 SFINAE 导致致命错误而不是替换失败
我这里有一个(相对)简短的代码示例。 #include template class function; template class function { public: template function(Func f, typename …
使用 decltype/SFINAE 检测运算符支持
一篇(有些)过时的文章探讨了使用decltype 与 SFINAE 一起检测类型是否支持某些运算符,例如 == 或 <。 下面是检测类是否支持 < 运算符的示例代码: …
SFINAE 未检测到 T::reference
std::vector 类是 STL 容器概念的模型,因此任何正确的向量实现都必须包含嵌套的 typedef value_type 以及参考。这应该可以使用 SFINAE 检测到。不过…
使用 SFINAE 检查全局运算符<<?
我想要几个重载的全局 to_string() 函数,它们接受某种类型 T 并将其转换为其字符串表示形式。对于一般情况,我希望能够编写: template inline typen…
使用SFINAE原则时重载函数是不明确的
我遇到了一些用 VS7.1 编写的代码,现在我正在尝试让它适用于 MacOSX。我理解的下面的代码片段是关于SFINAE原则的。据我了解,代码用于在编译时通过依…
SFINAE:检测类是否有自由函数
有没有办法使用 SFINAE 来检测给定类的自由函数是否重载? 基本上,我有以下解决方案: struct has_no_f { }; struct has_f { }; void f(has_f const&…
是否可以使用 SFINAE/模板来检查操作员是否存在?
我试图检查一个运算符在编译时是否存在,如果不存在我只想忽略它,有什么办法可以做到这一点吗? 示例运算符: template QDataStream& operator& l); …
SFINAE 编译器问题
我的以下代码应该检测 T 是否有 begin 和 end 方法: template struct is_container { template
使用 decltype() 和 SFINAE 时出错
为了回答..某个地方的其他问题,我编写了这段代码。 struct no_type{}; template struct has_apply { static decltype(T().apply(double())) func( T*…