template-meta-programming 相关问题

模板元编程是一种元编程技术,其中编译器使用模板生成临时源代码,该代码由编译器与其余源代码合并然后编译。

如何根据模板值有条件地声明一个或多个数组?

在编译时,我需要通过声明最多三个单独的数组来分配内存,每个数组分别从三个相同大小的内存库中分配。从第一个bank开始,数组是decl...

回答 1 投票 0

c++ - 可变参数结构的多个参数包

这个问题类似于C++ - Multiple parameter packs for variadic function,但专门针对结构。 以下编译并运行良好(取自链接的问题)。 模板...

回答 1 投票 0

C++ 中一组已知类型的成员函数模板的自动实例化

我试图显式实例化一个成员函数模板,以使其定义远离标头。需要实例化的类型是 std::variant 的替代类型

回答 1 投票 0

在模板参数中使用 constexpr 向量 (C++20)

最近,我一直在使用 C++20 的新 constexpr std::vectors (我使用的是 GCC v12),并且遇到了一个小问题(这实际上是我上一个问题的扩展,但是我也这么想

回答 1 投票 0

TMP:如何推广向量的笛卡尔积?

对于整数向量的向量的笛卡尔积,有一个出色的 C++ 解决方案(实际上有 2 个解决方案:递归和非递归)。为了说明/简单起见,让我们...

回答 2 投票 0

编译时递归函数来计算整数的下一个2的幂?

在 Bit Twiddling Hacks 网站上,提供了以下算法来将整数四舍五入到 2 的下一个幂: 无符号整型 v; // 计算 32 位 v 的下一个最高的 2 次方 v--; v |=...

回答 4 投票 0

函数模板中的战斗类型参数顺序和enable_if规范

考虑: 模板::类型> std::vector WorkOnIt(首先输入,最后输入) { 标准::

回答 1 投票 0

使用std::is_base_of获取value时,为什么可以用{}或()代替::value?

为什么这三个输出是等价的,这是什么语法?

回答 1 投票 0

如何使`std::conditional_t`与递归一起工作?

我的用例如下: 模板 结构皮{ 使用类型 = std::conditional_t, 类型名剥离>::type, T&...

回答 2 投票 0

enable_if 用于模板化基类 (C++11) 元编程

我尝试编写一个行为类似于“编译时继承”的程序,例如以下 C++11 元程序... // 导入 #包括 // 非临时...

回答 1 投票 0

模板专门化,指定类型派生自某个类

我想专门研究下面示例中的 NumberValue 类。 类号{}; 第一类:公众号{ 静态 constexpr int 值 = 1; }; 第二类:公众号{ 静电...

回答 1 投票 0

decltype(std::get<0>(tup))到底是什么?

我目前正在学习 C++ 元编程,我正在尝试查看元组的元素是否是指针。我尝试了这种方法: 整数a = 3,b = 4; 自动 tup = std::make_tuple(&a, b); 标准:...

回答 2 投票 0

我可以使用C++宏将代码插入到不同的地方吗?

我想编写一个宏来声明一个结构体字段并将该字段的初始化过程插入到 Init() 函数中。但我发现宏不可能将代码插入到不同的地方(在...

回答 1 投票 0

为什么我不能std::申请成员函数

我正在尝试开发一个包装器来帮助人们使用 pthread 来调用任何成员函数。 模板 结构签名; 模板 斯特...

回答 3 投票 0

条件定义变量(static if)

在多种情况下,我想使用类似的东西 模板 结构S { 整数值; if constexpr(条件) /*#if 条件*/ 双倍 my_extra_member_variable; /*#结束...

回答 1 投票 0

如何将模板化固定字符串传递给另一个类的构造函数的重载

我在尝试传递已经初始化的字符串时遇到问题,该字符串实际上没有正确接受重载: #包括 #包括 #包括 我在尝试传递已经初始化的字符串时遇到问题,该字符串实际上没有正确接受重载: #include <cstddef> #include <ranges> #include <algorithm> #include <iostream> template <std::size_t N> class A { char m_m[N]; public: A(char const (&p)[N]) { // Copy p to m_m std::ranges::copy(p, m_m); } }; template <std::size_t N> class B { public: B(A<N> a) { // Perform some operation on 'a' } }; int main() { auto k = B("test"); } 采取,过载正确,但我目前得到: prog.cc:26:22: error: no matching function for call to 'B(const char [5])' prog.cc:20:5: note: candidate: 'template<long unsigned int N> B(A<N>)-> B<N>' 20 | B(A<N> a) { 代码中的问题是类 B 的构造函数需要一个 A<N> 类型的对象,但您试图传递一个字符串文字,它是一个字符数组,而不是 A<N> 类型的对象。 您可以修改 B 构造函数以直接接受字符串文字。 这是代码的更新版本: #include <cstddef> #include <ranges> #include <algorithm> #include <iostream> template <std::size_t N> class A { char m_m[N]; public: A(char const (&p)[N]) { // Copy p to m_m std::copy(p, p + N, m_m); } }; template <std::size_t N> class B { public: B(const char (&p)[N]) { A<N> a(p); // Perform some operation on 'a' } }; int main() { auto k = B("test"); return 0; }

回答 1 投票 0

C++ 中的条件编译时警告

我正在为 C++17 实现我自己的 std::expected 类似物,并且我正在编写一个方法,该方法接受一个函数并在成功的预期值上调用它。如果预期有错误,

回答 1 投票 0

如何在完美转发中有效地将右值引用转为左值

我正在实现一个简单的通用函子类,它可以存储函数及其参数,因此可以稍后调用。该函数可以是自由函数或 cl 的成员函数...

回答 1 投票 0

我可以检查表达式是否依赖于类型吗?

有些事情告诉我答案是“不”,但我想我还是会问。 我想在宏中检查特定表达式是否依赖于类型。这是一个激励人心的例子: #包括<

回答 1 投票 0

使用 boost::pfr 获取字段名称

嗨,我使用 boost::pfr 进行基本反射,它工作正常,但问题是它只是打印或处理字段值,就像 boost::pfr::io 一样,它打印结构,但是如何...

回答 4 投票 0

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