crtp 相关问题

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

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

[看下面的简单的好奇重复模板模式(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

成员变量在每种方法中都有不同的地址

我有此代码(最小示例):#include #include class Base {public:virtual void test()= 0;虚拟〜Base()=默认值; };模板 ...

回答 1 投票 0

如何为CRTP声明一个函数为final?

正如我们在CRTP中所知道的,派生类继承基础,作为最终继承。如果我们希望使派生类不是最终的,但“覆盖”函数是“最终的”怎么办?有没有办法用...

回答 2 投票 0

CRTP模式不会触发完整的模板实例化

我已经创建了一个模板类,该模板类会在实例化发生时触发运行时文本输出:template struct verbose {verbose(){std :: cout <

回答 1 投票 3

Java枚举定义

我以为我很好地理解了Java泛型,但是随后我在java.lang.Enum中遇到了以下内容:class Enum >有人可以解释如何解释这种类型...

回答 7 投票 147

CRTP在抽象类上的好处?

我对“好奇地重复使用的模板模式”这个概念不熟悉,我在这里读到它的潜在用例。在那篇文章中,作者描述了一个简单的例子,其中我们有两个或多个...

回答 1 投票 0

std :: enable_shared_from_this的CRTP

[enable_shared_from_this必须以公共方式继承。 之间有区别 class BinaryOp: public ASTNode, std::enable_shared_from_this<BinaryOp> 和 class BinaryOp: public ASTNode, public std::enable_shared_from_this<BinaryOp> 您错过了public。因此,默认情况下使用private。

回答 1 投票 0

c ++使用CRTP为可变模板中的每种类型创建纯虚拟重载

我想为可变参数模板中的每种类型创建一个纯虚拟接口。例如,一个类:overloads_interface 定义了以下功能:虚拟虚空重载(...

回答 2 投票 1

C ++可以通过std :: variant获得当前类型的std :: typeindex

我如何通过c ++中的一个变体获取当前帮助类型的std :: typeindex?说我有一个变体:使用variant_t = std :: variant ;我想...

回答 1 投票 0

使用CRTP将基类的子类传递给构造函数?

我具有以下基类:class BaseVisitor {public:virtual〜BaseVisitor(){}; }; template class Visitor {public:virtual void visit(T&)= 0; };模板

回答 1 投票 0

CRTP多级继承使用另一个模板参数实例化中间类

给出这样的多级继承CRTP类结构,其中中间类B具有另一个模板参数T,我应该如何实例化B的对象?模板

回答 1 投票 0

从基本调用访问派生的crtp类的函数

我需要能够从基本CRTP类中访问派生类的静态方法。有什么方法可以实现这一目标?这是示例代码:#define REQUIRES(...)std :: ...

回答 1 投票 1

使用CRTP创建特征矩阵

我有一个包含一些本征矩阵作为成员的类层次结构,但它们的大小依赖于派生类。我希望能够在基类中声明的矩阵,但有大小...

回答 2 投票 0

CRTP和多级继承

我的一个朋友问我“如何使用CRTP在多级继承来代替多态性”。更确切地说,在这样的情况:结构A {空白栏(){//做一些事情,然后调用...

回答 7 投票 22

如何执行从CRTP基类中的所有函数可变参数派生类?

我有一个CRTP派生类是所有CRTP基类是可以继承的可变参数模板。我想执行从每一个继承的类(本例中的打印功能)的功能...

回答 2 投票 2

CRTP自动注册工厂(静态初始化命令惨败)

我正在尝试自动注册CRTP工厂类。我的目标是不使用宏来注册类类型,也不使用explicitely调用寄存器方法。我根据这个答案做了我的尝试:......

回答 1 投票 1

CRTP共享指针的C ++向量

在我寻找一种在容器中存储CRTP对象的方法时,我发现了以下问题:C ++中奇怪重复模板模式(CRTP)的多态集合?我试着标记了......

回答 2 投票 0

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