templates 相关问题

模板标签用于多种上下文:通用编程(尤其是C ++),以及使用模板引擎生成数据/文档。在实现繁重的问题上使用此标记时 - 标记实现编写的代码语言。

未调用 C++ enable_if 类特化

我有以下尝试使用enable_if来实例化A类的2个不同专业化的示例,但我没有正确理解它,因为它们没有被调用,任何建议...

回答 1 投票 0

SFINAE 工作正常,但概念约束在类模板实例化中进行了模糊的推论

我正在编写一个曲线类,它可以采用算术类型或算术数组类型作为模板参数。 对于算术数组曲线,本身需要一个包含算术c的数组成员...

回答 1 投票 0

为什么我的 C++ 函数模板特化没有被调用?

我有以下代码: 模板 bool validate(const T& 最小值、const T& 最大值、const T& testValue) { 返回 testValue >= 最小值 && testValue &l...

回答 1 投票 0

为作为模板类成员类型的参数类型专门化一个 C++ 自由函数?

我有一个不幸的类设置,我被困住了,我需要调用一个专门针对类的每个变体的简单函数。 下面是代码的简化版本,显示...

回答 1 投票 0

Meteor 模板 Blaze 如何仅返回数组的第一个元素

例如我有一个数组: var arr = ['a', 'b'] 并且只想获取模板中的第一个元素

回答 1 投票 0

Ansible Tower 工作流程作业模板

我有两个作业模板作为 Tower 中工作流程作业模板的一部分。 第一个作业模板提供了一个虚拟机。我想从虚拟机收集一条信息(MAC 地址)并将其传递给...

回答 1 投票 0

如何使用可能不完整的类型参数调用模板函数

模板函数 func 设计为可在任何地方使用。它对任何 T 都有相同的函数体。我只想写一次它的函数体。但功能取决于定义类型 模板功能func<T>设计用于任何地方。对于任何T,它都有相同的函数体。 我只想写一次它的主体。但该功能取决于 type<T> 的定义才能正常工作,并且在某些情况下没有 type<T> 的定义。请参阅以下示例(C++17 中): /// type.h #include <stddef.h> #include <stdint.h> #include <type_traits> template<typename T, typename = void> struct type; template<typename T> size_t func() { return type<T>::magic; } template<typename T> struct type<T, std::enable_if_t<std::is_arithmetic_v<T>>> { static constexpr size_t magic = sizeof(T) * 2; }; /// my_type.h struct MyStruct { int a; static void Dummy(); }; /// my_type.cpp #include "my_type.h" #include "type.h" template<> struct type<MyStruct> { static constexpr size_t magic = 123; }; void MyStruct::Dummy() { (void)func<MyStruct>(); } /// main.cpp #include "my_type.h" #include "type.h" int main(int argc, char **argv) { func<int>(); // OK func<MyStruct>(); // Error } 我怎样才能做到这一点: 只写一次func<T>的正文。 当 func<T> 不完整时,可以调用 type<T>。 注意:有一个 Dummy 函数,用于强制编译器为 func<MyStruct> 生成代码,以便链接器满意。 使用显式实例化: /// my_type.h struct MyStruct { int a; }; // Explicit instantiation declaration extern template size_t func<MyStruct>(); /// my_type.cpp #include "my_type.h" #include "type.h" template<> struct type<MyStruct> { static constexpr size_t magic = 123; }; // Explicit instantiation definition template size_t func<MyStruct>(); 声明它存在于头文件中(因此包含头文件的任何内容都可以看到声明,而不是尝试实例化模板本身),并在类型完成后在源文件中定义它。 您也不再需要Dummy,无论如何也不能保证它能工作。

回答 1 投票 0

GitLab - CI/CD 模板访问令牌问题

我的问题有点复杂,所以我尝试准确地描述它: 我们在 GitLab 项目 A 中有一个 ci 模板,它包含在项目 B 中。只要我是

回答 1 投票 0

使用 `std::apply` 迭代 `std::tuple`

我试图使用 std::apply 调用元组所有元素中的特定成员函数。当我使用 lambda 时这有效,但在定义自由函数时则无效。 以下模板元组 - 调用...

回答 1 投票 0

电子邮件模板覆盖 Vtiger CRM 中的内容的问题

我在使用 Vtiger CRM 的电子邮件模板功能时遇到问题。每当我在电子邮件模板模块中选择模板时,它都会覆盖 CKEditor 字段中的任何现有内容,即使...

回答 1 投票 0

根据 url 命名 Drupal 7 模板文件

如果我有一个url别名为“/api/user/create”的页面,如何根据url命名模板文件,例如“page-api-user-create.tpl.php”。

回答 2 投票 0

“Windows 窗体应用程序”与“Windows 窗体应用程序 (.NET Framework)”之间的区别

在 Visual Studio 2019 中创建新项目时,有两个选项可用于创建 Windows 窗体应用程序:Windows 窗体应用程序和 Windows 窗体应用程序 (.NET Framework)。 这些有什么区别

回答 6 投票 0

哪个模板实际上是用于使用pointer = typename _Ptr<_Tp, _Dp>::type;对于不同的条件?

下面的代码见unique_ptr.h 模板 类 __uniq_ptr_impl { 模板 结构_Ptr {

回答 1 投票 0

如何验证字符串编译时间?

我正在尝试使以下代码起作用: #包括 #包括 #包括 模板 结构解析说明符; 模板<> 结构

回答 1 投票 0

docx 模板 Docx4j 替换 Java 中的文本

我是 Docx4j 的新手,我的任务是替换 docx 模板的一些文本。 我阅读了 docx4j 的入门指南,但我认为我没有完全理解整个概念。 好吧,无论如何...我已经...

回答 2 投票 0

决定模板类是包含 2 个变量还是仅包含 1 个变量

我想要一个嵌套类 B,其行为如下: 如果 T 为 void,则 B 只有一个成员字段 sz 并且 sizeof(B) == sizeof(sz) 否则,B 有一个成员字段 sz 并以某种方式获得 T #我...

回答 1 投票 0

多个cpp文件中不同的模板实例化

我最近偶然发现了一个好奇的 cpp 模板架构。模板类声明位于头文件中,定义位于 cpp 文件中,并带有一些显式实例化。不那么常见...

回答 1 投票 0

如何为类模板的成员函数定义显式特化?

我需要将类模板 X 的成员函数专门化为某种类型(假设为 double)。 虽然类 X 本身不是类模板,但它工作得很好,但是当我将其设为模板时,GCC 开始给出...

回答 3 投票 0

从基类获取类型

假设我们有 派生类:公共 Base1、公共 Base2、...、公共 Base> {}; 如何编写一个从 Derived 获取类型 std::tuple 的类?也许基地需要...

回答 2 投票 0

如何从模板类获取参数值

为了方便起见,我使用 Eigen::Matrix 定义了 1d、2d、3d 和 4d 向量。 命名空间 MyNamespace { 模板 使用 Vec = Eigen::Matrix 为了方便起见,我使用 Eigen::Matrix 定义了 1d、2d、3d 和 4d 向量。 namespace MyNamespace { template <class scalar_t, int dim> using Vec = Eigen::Matrix<scalar_t, dim, 1, Eigen::ColMajor | Eigen::AutoAlign, dim, 1>; typedef Vec<double, 1> Vec1d; // Convenience typedef for 1d vector of doubles. typedef Vec<double, 2> Vec2d; // Convenience typedef for 2d vector of doubles. typedef Vec<double, 3> Vec3d; // Convenience typedef for 3d vector of doubles. typedef Vec<double, 4> Vec4d; // Convenience typedef for 4d vector of doubles. } 然后我定义了一个模板类,它应该能够将维度 dim 存储为可枚举: namespace MyNamespace { /** * A class representing Monomial basis. */ template <typename vec_t> class Monomials { public: typedef vec_t vector_t; ///< Vector type. /// Store dimension of the domain. enum { /** Dimensionality of the domain. */ dim = vec_t::dim }; public: /** * Construct a basis of all monomials */ Monomials(int order){ printf("order: %d", order); printf("dimension: %d", vec_t::dim); // < ------ I want this! }; }; } 但是,这无法编译(可在此处重现:https://godbolt.org/z/ro7fn6o3f) using namespace MyNamespace; int main(){ auto p = Vec2d{0.0, 1.0}; printf("%f, %f\n", p[0], p[1]); auto m = Monomials<Vec2d>(2); return 0; } 相反,我收到一条错误消息 <source>:21:62: error: 'dim' is not a member of 'Eigen::Matrix<double, 2, 1>' 应该如何运作? 我想要的基本上就是获得某种 Vec2d::dim 功能,这将返回给定向量的维度,在本例中为 2。

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.