cost 106 ms
接受捕获 lambda 作为构造函数参数并将它们存储在 class 中的语法选项 - Syntax options for accepting capturing lambdas as constructor args and storing them in class

我正在尝试编写一个向量包装器( indexed_vec ),它存储类型为 ValueType 的对象,但其他数据结构(其他类型的向量)通过索引引用这些对象(因为迭代器显然不稳定)。 因此,当 ValueType 的对象在indexed_vec中被删除时,必须进行一些内务处理以使其他数据结构中的索引保 ...

推导模板定义基类 class 构造函数参数的类型 - Deduce types of template-defined base class constructor parameters

我有一个派生的 class, Wrapper ,它继承自模板定义的基类 class。我想配置Wrapper ,以便如果基类 class 具有构造函数参数, Wrapper的构造函数还包括基类的构造函数参数,以便它可以将它们转发给基础 class 构造函数:struct Base1 { Base1 ...

Class 模板参数推导使用 function 返回类型 - Class template argument deduction using function return type

我想制作一个带有模板参数的 class 和一个返回 class 实例的 function(也带有模板参数)。 但是,对于较短的代码,我想在返回 class 构造的结果时省略模板参数。 我不知道如何称呼这种技术以及是否可能。 为了更好地描述我的问题,下面的代码是我理想中寻找的示例。template & ...

继承 CTAD 构造函数 - Inherit CTAD constructor

我从std::tuple派生,但由于 class 模板参数推导问题,无法从初始化列表构造派生的 class。 有没有更好的方法来构造这样一个 class 除了先给它一个已经构造好的元组first{ std::tuple{1, 1.0f, 1u} }; . ...

CTAD 不适用于默认模板参数? - CTAD doesn't work with defaulted template arguments?

当我有一个带向量的类对象时,比较以下情况。 非推导参数 T 可以用默认模板参数很好地替换: 对于我的课程来说情况并非如此,它有点复杂( CompilerExplorer ): 这失败并出现以下错误: 但是当我在容器的实例化中(在 main 中)补充模板专业化obj<0>时,它 ...

基于传递给构造函数的参数数量的推导指南 - Deduction guide based on number of parameters passed to constructor

这是我正在尝试但似乎不起作用的东西:我想根据类对象的实例化方式来切换编译时开关。 如果只有一个构造函数参数,则LengthOpt应等于false ,否则为true (我的实现有更多构造函数,其中开关应默认为true 。 我试图创建一个演绎指南,但如果模板参数没有显示为构造函数参数(这是一个真正的沮 ...

提供显式演绎指南是否会禁用隐式演绎指南的生成/形成 - Does providing an explicit deduction guide disable the generation/formation of implicit deduction guides

我正在阅读 C++17 中的演绎指南。假设我们有以下示例: 我的问题是,显式推导指南的显式声明(如上所示)是否会禁用2 个隐式推导指南(对应于 class 模板Person的 2 个 ctors)的形成,如果我们没有指定显式推导指南,它们就会存在扣除指南。 我的意思是,假设在上面的例子中,没有显式推 ...

C++ - 为什么聚合初始化不适用于模板结构 - C++ - Why does aggregate initialization not work with template struct

此代码有效,无需指定构造函数: 如果我将 Foo 设为模板,则它不起作用。 它说扣除失败/提供了 2 个 arguments,而预期有 1 个。 如果我添加一个像Foo(T1, T2){}这样的构造函数,那么它就可以工作。 我想,这种结构默认情况下只适用于结构。 我怎么了? 编辑:我正在使用 Cla ...

为什么 GCC 编译器不能以别名模板形式从 std::array 推导出模板参数之一 - Why can't GCC compiler deduce one of the template parameter from std::array in alias template form

在 C++20 中,如果应用别名模板,则可以具有隐式推导指南。 然后,我构建了一个简单的模板别名,它是ints :template <std::size_t N> using ints = std::array<int, N>; 但:ints{1, 2, 3, 4} 不起 ...

使用 c++17 CTAD 进行函数对象参数推导 - function object argument deduction with c++17 CTAD

我有很多类型可以使用比较函子,我想看看是否有办法在不传递参数的情况下简化它。 这是一个虚拟代码示例: 不幸的是,这不起作用https://godbolt.org/z/q56c3coaT 。 但是我想知道 c++17 std::less 是如何工作的,或者有什么办法可以做到? ...

SFINAE 检测 CTAD 推导指南的明确性 - SFINAE to detect the explicitness of a CTAD deduction guide

C++17 中 CTAD(类模板参数推导)鲜为人知的特性:可以将用户定义的推导指南标记为explicit 。 (神箭。 ) 因此,class 模板A和B具有明显不同的行为。 我想编写一个单元测试,让static_assert表明我的一个模板的行为像B ,而不像A 。 这在 C++17 和/或 C ...

具有推导的 class 模板专业化类型的变量声明器中的冗余括号 - Redundant parentheses in the declarator of a variable with deduced class template specialization type

以下程序 由 GCC 编译,仅对声明符周围的冗余括号发出警告。 但是,Clang 给出了声明的硬错误错误:用推导的 class 模板特化类型声明变量时不能使用括号这是一个非常具体的错误(例如S<int> (s);编译),所以我想这是故意的,但我找不到说这是格式错误的措辞。 像dcl.dc ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM