替换失败不是错误。这是一种C ++编程技术,允许模板验证有关其模板参数的属性,从而允许在某些类型的对象可用时使用不同的特化。
std :: is_copy_constructable for std :: vector
我最近阅读了这篇博客文章,介绍了为什么必须无条件地复制vector以便可以支持不完整的类型。我了解从逻辑角度来看也是必须的,因为...
检查类型是否直接从“如果……启用时”上下文中的另一类型派生(是其子代)
C ++具有is_base_of 。但是,这也包括“祖父母”类型。有没有办法获得is_child_of 功能?目的是将类型用作...
我有一个创建std :: function的类。为了简单起见,在此示例中,我将说std :: function返回一个布尔值。 std :: function需要接受一个可变参数元组。目前,我有...
我正在尝试实现一种结构,该结构在编译时检查给定类型是智能指针还是智能指针的引用。我重写了此解决方案(不适用于参考):...
是否可以一次执行许多重载/规范,如下面的代码所示。我希望很清楚,我正在尝试实现什么,但是编译器并不这么认为。 #include
我正在尝试学习如何使用SFINAE。出于练习目的,我试图制作一个std :: ostream包装器,以制作一个自定义格式化程序。这是我的SFINAE和自定义输出类。 //测试器...
我试图在这里实现对我的SO问题的回答:我的目标是检测模板类T中是否存在void cancel()noexcept方法。这是我的最小示例:#include
以下是我可以提出的最小的有意义的程序,以重现此问题的困境。由于...
我以为下面的代码可以编译,因为有冲突的重载已经消失了。但是编译器(GCC)说:void Foo :: bar(Xd)const'不能重载。有没有简单的方法...
我在问一个(受欢迎的)问题的变体-检测类方法的存在。我已经在SO中阅读了许多答案,大多数(C ++ 17之后的)解决方案看起来都像这样:#...
您能告诉我为什么以下代码无法编译(在MSVC中“找不到匹配的重载函数”):template struct LinearModel {//具有基本矢量template
MSFIN2017带有数字限制的SFINAE :: max()
以下代码:模板 类型名称std :: enable_if :: max()== std :: numeric_limits :: max(),bool> :: type same_max(){。 ..
JetBrains ReSharper for C ++告诉我用#ifdef _WIN32#define cls system(“ cls”)#else //假设是Unix#define cls system(“ tput clear”)#endif // _WIN32替换为...
我已经编写了一个类模板,只希望有条件地使用复制构造函数。为此,我想应用一些SFINAE技巧,并且需要将复制构造函数模板化。 ...
我在项目中大量使用SFINAE函数,不确定以下两种方法(样式除外)之间是否有任何区别:#include #include ]]]
我被要求使用SFiNAE拒绝我的Pow(T)模板功能的非集成版本。因此,如果推导的类型为整数,则返回参数*参数,否则不执行任何操作,仅通知...
此代码有效:// // g ++ -std = c ++ 11 //(或)// clang ++ -std = c ++ 11 #include template struct Tester {template ... ] > ] >>
如何检测是否是否定义了T :: is_transparent?
是否有用于测试的通用模板/宏,例如。如果定义了名称,则为ala。 is_transparent如何工作。 is_transparent使比较器对std :: set透明(即可以使用...
SFINAE-检测类型T是具有随机访问运算符的给定值类型的指针,数组还是容器
我正在与SFINAE进行斗争,试图拥有许多只需要使用运算符[]访问类型T的功能。到目前为止,我有以下代码可以在Visual上编译并正常工作...