crtp专题提供crtp的最新资讯内容,帮你更好的了解crtp。
有没有一种方法可以从基类对象调用派生类的方法,而基类对象不提供调用接口?我想做这样的事情
我想在 C++ 中使用静态多态实现 <a href="https://en.wikipedia.org/wiki/Template_method_pattern" rel="nofollow noreferrer">templ
我在模板化的类中遇到了循环依赖的问题.有一个代码示例: template <typename T> struct A { typedef typename T::C D; //typename T::C c; }; struct B : public A<B> { struct C {}; }; 当我尝试实例化B时,我得到一个编译器错误:’C’不是’B'(MSVC)的成员或无效使用
在我提出 here问题之后,我问这个问题. 关键很简单.假设你有两类这样的类: template < class Derived > class Base { ... operator const Derived&() const { return static_cast< const Derived& >(*this); } ... }; class Specialization
假设我有一个克隆派生类的基类: class Base { public: virtual Base * clone() { return new Base(); } // ... }; 我有一组派生类,使用奇怪的重复模板模式实现: template <class T> class CRTP : pub
在VC 10中,以下示例因错误C2027而失败:“使用未定义类型’X’”.但是g 4.6编译得很好. template<class T> class C { static const size_t size = sizeof(T); }; class X : public C<X> { }; 哪一个是对的?我将如何做到这一点,以便它适用于主流编译器? 这不是一个大问题,因为VC仍然允许在
这是这个场景:我想要一个主机类,它可以有一个可变数量的混合(不是太多的可变模板 – 参见例如 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.144).但是,我也希望由主机类参数化mixins,以便它们可以引用它的公共类型(使用CRTP成语). 当尝试混合这两个问题时出现问题 – 正确的语法对我来说不清楚. 例如,以下代码无法
我有以下基本模板类. template<typename T> class Base { public: void do_something() { } }; 它旨在用作奇怪的重复模板模式.它应该像B类一样继承:public Base< B>.它不能像B类一样继承:public Base< SomeoneElse>.我想静态地执行这个要求.如果有人使用了这个错误,我预计编译阶段
是否可以在CRTP基类中推断模板化成员函数的返回类型? 虽然推断参数类型工作正常,但它返回类型失败.请考虑下面的例子. #include <iostream> template <typename Derived> struct base { template <typename R, typename T> R f(T x) { return static_cast<Der
我正在研究mixins(C).我读了一些关于mixins的文章,发现C中有两种不同的“近似”混合模式. 模式1: template<class Base> struct Mixin1 : public Base { }; template<class Base> struct Mixin2 : public Base { }; struct MyType { }; typedef Mixin
我对CRTP的编译方式感到困惑.如果我们有这样的事情: template<class T> class Base { }; class Derived : public Base<Derived> { }; 为什么在编译期间没有类似的事情发生? (X [Y]表示X继承自Y) 声明派生实例后 衍生d; d正在扩展为模板和继承的无限复发 d [基<衍生[基<衍生[基<衍生[基<衍生[…]>]>]>
一段时间后,我想创建自己的数据映射器,这将比您的平均ORM简单得多.在这样做时,我发现需要访问我的基类中继承类的类型信息.我的第一个想法是反思,但是太慢了(如果你使用反射,看看 Fasterflect,因为它几乎“消除了反射的性能问题). 所以我转向一个解决方案,我后来发现有自己的名字:好奇的循环模板模式.这主要解决了我的问题,但是学习如何正确地实现这种模式有点具有挑战性.我必须解决的两个主要问题