C# - 侵入式树结构,使用CRTP
我目前正在研究一种在 C# 中实现侵入式树结构的简单方法。由于我主要是一名 C++ 程序员,所以我立刻就想使用 CRTP。这是我的代码: public class Tree…
您可以使用 CRTP 和以接口作为参数的函数吗?
在 C++ 中,纯虚拟类通常用于运行时多态性。 所以你有: class IInterfaceA { virtual void DoFoo() = 0; }; 和派生类,如: class CFancyObject : pu…
使用继承时,带有 CRTP 的 typedef 不起作用
有没有办法使用 CTRP 为继承关系中的类定义同名类型?我尝试了以下代码,但收到来自 clang++ 的 错误:在不同类型的多个基类中找到成员“ptr_t”。 #i…
问题重构奇怪的重复模板模式
以下代码无法在 g++ 4.6.1 上编译: template struct GetBase { Base * getBase() { return static_cast(this); } }; template struct Parent : priva…
模板化派生类通过CRTP类继承,访问基类成员对象
如果我尝试从继承层次结构另一端的模板类调用基类成员的成员函数, class memberobj {public: void bar(){}}; class basis {public: memberobj foo;};…
自反类型参数约束:X其中T:X T 。 ‒有更简单的替代方案吗?
我经常通过向简单的接口添加自引用(“自反”)类型参数约束来使简单的接口变得更加复杂。例如,我可以将其转换 interface ICloneable { ICloneable C…
使用 CRTP 时如何获取模板参数的大小?
在 VC++10 中,以下示例失败并出现错误 C2027:“使用未定义类型 'X'”。然而 g++ 4.6 编译得很好。 template class C { static const size_t size = …
crtp 和类型可见性
我有一个正在尝试解决的难题,从根本上来说,它可以归结为以下示例: template struct A { typedef typename CT::VALUE_T FOO; // FOO is dependent o…
指向成员函数默认值的 CRTP 相关编译器错误
您好, 在制作基于 CRTP 的通用包装器来调用任意库函数时,我遇到了一个我无法理解的问题。这是一个非常简单的代码来说明问题: #include template c…
使用奇怪的重复模板模式时的返回类型
我正在使用奇怪的重复模板模式 (CRTP)在我的 C# 项目中,但我遇到了一些问题。从上面的链接中截取的代码: public abstract class Base where T : Bas…
C++ CRTP 和从基访问派生的嵌套类型定义
编辑:当我完成对任何感兴趣的人的设计更改后,我将在此处放置一个 github 链接。 背景 我正在用我自己的 64 位编译侵入集内容 3 x 8 的实现替换 boos…
C++ CRTP 类层次结构
来自维基百科: // The Curiously Recurring Template Pattern (CRTP) template struct base { // ... }; struct derived : base { // ... }; 现在如…
匹配模板类中的CRTP
最近我一直在摆弄模板并偶然发现了以下问题。我正在实现这样的 CRTP 模式: template struct protocol_object { ... }; struct data_object : public …