crtp 相关问题

奇怪的重复模板模式(CRTP)是一种C ++习语,其中类X派生自使用X本身作为模板参数的类模板实例化。

我可以使用 CRTP 来强制执行接口吗?

我想在编译时强制类使用 CRTP 实现接口。 我想避免虚拟函数(我不需要虚函数表)。 这可能吗? 以下是我尝试强制执行的

回答 1 投票 0

为什么 CRTP 模板的派生类不初始化静态变量?

所以我正在尝试创建一个基于CRTP的工厂。为简单起见,我将仅包含此处相关的内容。我有两个问题可能彼此无关,但我一直在尝试......

回答 1 投票 0

使用 C++ ODR 自动注册类型

我正在尝试获取一个演示代码,以在 ODR 使用的帮助下显示自动注册(我在最后一天才了解到这一点,如果我没有正确使用它,请原谅我)。 这是

回答 1 投票 0

为什么在使用 CRTP 时结构字段会查看未初始化的内存?

我开始尝试使用 CRTP 并遇到了一个非常有趣的问题,这个问题已经让我两天没睡了。 使用 CRTP 我声明了 3 个结构:Column、Header 和 Footer,它们是

回答 0 投票 0

将可变模板参数解包到可变继承类中

我有简单的 3 个类,其中两个实际上是继承的: 结构A { }; 结构 B :虚拟 A { B(整数, 整数) { } }; 结构 C : 虚拟 A { C(整数) { } }; 现在我想上一堂课......

回答 0 投票 0

如何基于运行时参数在 C++ 中执行多态静态调度?

我想根据运行时参数在一个类的多个实现之间进行选择。这对于多态性和动态调度来说很简单,如以下示例所示: //演示.cc #

回答 2 投票 0

在 CRTP 类层次结构中静态断言派生类没有实现某个方法

我有一个使用 CRTP 的类层次结构。基类定义了一个我无法更改的接口(在另一个库中)。它有一些 impl 方法,派生类可以“覆盖”(影子)到

回答 2 投票 0

CRTP 中的返回类型推导是否需要不同的模板参数?

我对某些代码的工作原理有一个大致的了解,但不确定部分是否多余,或者我是否只是不明白为什么这样做。这个例子取自这里:https://github.com/pyt...

回答 1 投票 0

CRTP的Base模板类中的'this'关键字是如何工作的?

我一直在研究 CRTP,我不明白的是在 main() 中我们创建了一个 Base* 类型的对象并调用 callDerived,为什么 'this' 是 B 的一个实例......

回答 1 投票 0

迭代不同的CRTP派生类方法。

在下面的一个例子中,我有一个非常典型的CRTP例子,两个不同的派生类,都有一个方法bar。基类有一个方法foo,它只是转发到一些派生的bar方法#......。

回答 3 投票 1

测试一个列表是否包含某些必填项和某些可选项。

我试图创建一个单元测试,以确保一个列表(或者,更广泛地说,一个容器)包含某些强制性项目,同时允许它也包含一些额外的可选项目(但是,......

回答 1 投票 0

概念可以与CRTP习惯用法一起使用吗?

给出以下奇怪的循环模板模式(CRTP)代码示例:template struct Base {X f()const {return X {}; }; template 类型名T> ...

回答 1 投票 1

CRTP如何使派生类具有基类的容器

我想使用CRTP模仿以下行为:#include #include class GameNumber {public:〜GameNumber(){}}; class GameNumber_real:public GameNumber {...

回答 1 投票 1

如何将可变参数CRTP基类设置为派生类的朋友

问题的主要部分是将CRTP与基于策略的设计和可变参数模板一起使用。从策略中无法到达主/派生类的受保护成员或私有成员。由于使用...

回答 1 投票 0

CRTP接口:实现中的不同返回类型

注意:在说明和示例中,我使用的是本征库。但是,我的问题可能会被不熟悉该库的人员(例如,通过替换...

回答 1 投票 1

基类中的构造函数可以使用CRTP调用继承类的函数吗?

我正在使用CRTP来实现继承层次结构。我的问题是在抽象基类中是否可以有一个构造函数来调用继承类的函数。以下代码具有...

回答 1 投票 0

好奇地重复的模板模式和无限递归

[看下面的简单的好奇重复模板模式(CRTP)示例:template 结构体{ 我们是否可以修改base::foo的定义,以便仅在存在static_cast<Derived*>(this)->foo()时才调用Derived::foo? 在Derived::foo中强制定义的一种方法是使用伪参数重载函数。 template <typename Derived> struct base { void foo() { static_cast<Derived*>(this)->foo(0); // Requires Derived::foo(int) } }; 或 template <typename Derived> struct base { void foo(int ) { static_cast<Derived*>(this)->foo(); // Requires Derived::foo(void) } };

回答 2 投票 0

将基于CRTP的类用作函数的参数,而无需了解模板参数

我目前正在尝试编写一个微分方程求解器,并希望使用类作为运算符,它们定义了一个重载的operator(),以便可以将这些运算符用作函子。目标是...

回答 1 投票 0

CRTP单例不完整类型或非文字类型

我正在尝试制作CRTP单身人士。这里已经有几个例子。我不确定我的与众不同或为什么它无法编译。第一次尝试:template class Base {...

回答 2 投票 1

将具有固定签名的自定义函数名称注入到CRTP中

我想为要创建的函数注入一个名称,该函数具有非常固定的签名到CRTP(奇特重复发生的模板模式)基类中。这是我现有的工作代码(coliru MCVE链接):-#...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.