替换失败不是错误。这是一种C ++编程技术,允许模板验证有关其模板参数的属性,从而允许在某些类型的对象可用时使用不同的特化。
例如 模板 类 foo { T1 t1; T2 t2; T1 栏(); //一直存在 decltype(t1(t2)) baz(); //仅当 t1(t2) 有效时才存在 }; 如果巴兹在...
std::conditional 中 true_type 和 false_type 的 SFINAE
编译此文件的最佳方法是什么? // 前提条件:Dims 要么是指针,要么是 std::map。 使用 T = std::conditional_t, std::remove_pointer_t...
在模板函数中,如果输入的类型是枚举类,如何使用 std::underlying_type ?
我有一段代码,它返回给定数字的某些位的值(我也使用 static_cast 将枚举类计算为数字)。 模板 bool get_bits(键入输入,u...
我有一个抽象基类,然后是一个模板化派生类,对于某些类型(由模板指定),我想在派生类中实现虚拟基方法,对于其他类型,这个sh...
为什么 Eclipse 会抱怨 C++ 模板的这种使用? [重复]
在 Eclipse 中,我正在查看的代码与 codereview.SX 问题“C++17:基于 Boost.Hana 的编译时插件注册”中发布的示例基本相同,只是浓缩为一个.. .
我想编写一个C++函数来检查其模板参数类是否不完整,因此只有类声明可用,但没有所有类成员的完整定义。 我的功能...
仅当 STL 未提供时才有条件声明 make_unique,否则,使用 std::make_unique 声明
我有以下代码: 命名空间 notstd{ // 仅当 std::make_unique 存在时才声明 使用 std::make_unique ; // 仅当 std::make_unique 不存在时才声明 模板<...
如果 T 有成员类型 Tag,我希望 TagOrInt 等于 T::Tag,否则等于 int。喜欢: 模板 使用 TagOrint = typename T::Tag; // 如果这是有效的 模板...
为什么当直接从函数返回类型推导函数类型时,结果会变成右值引用,而 bool_constant 中的实现会产生正确的类型? #包括...
理解 SFINAE:部分专门化类之外的成员函数声明以及可变参数类中的模板
我想做的事: 创建一个“指令集”对象 由别处的指针持有 保存可变数量的指令对象,其类型满足概念“is_instruction_type” 有'额外...
我什么时候想使用 auto&& 而不是 decltype(auto) 或 ->decltype(return-expr) 作为函数定义的返回类型?
采用三个返回纯右值、左值、x值的函数: int f(); int&f(int); int&& f(int, int); 并通过返回 decltype(auto) 的函数调用它们 decltype(auto) 返回DecltypeOf(
鉴于: 结构A { 虚拟布尔什么()= 0; }; 模板 结构 B :公共 A { 虚拟布尔什么(); }; 我想部分专业化: 模板<
我的结构如下: 模板 类模板类 { ... }; 模板 类 UsesTemplateClass { 民众: UsesTemplateClass( TClass...
我的结构如下: 模板 类模板类 { ... }; 模板 类 UsesTemplateClass { 民众: UsesTemplateClass( TClass...
这个话题有很多相关问题,但我仍然对以下案例感到困惑: #包括 #包括 结构体A{}; struct B { void 运算符 + (const B&am...
使用 constexpr、SFINAE 和/或 type_traits 进行 char*、char 数组和字符串文字的重载解析
我遇到了一个有趣的挑战,我花了几个小时试图解决这个挑战,但经过大量研究和多次失败的尝试后,我发现自己在问这个问题。 我想写3
为什么可以用 std::is_const 和 std::is_reference 来实现 std::is_function ?
以下是 std::is_function 的实现吗? 模板 结构 is_function : std::integral_constant< bool, !std::is_const::value && !...
我有一组大致定义如下的类: 模板 类可迭代{ // 更多代码 }; 容器类:公共可迭代 { // 更多代码 }; T 级...
大约一两年前,我读到了 C++ 中的 SFINAE 规则。他们特别指出, 以下类型错误是 SFINAE 错误: ... 尝试创建一个 void 数组、引用数组、arr...
比如有一个模板类: 模板 类示例; 如果一对 (A, B) 被特化,则其他类型不能用 A 特化。例如,(B, C) 是