是否可以使用CRTP访问父类体内的成员?

Nik*_*s R 7 c++ templates crtp

在使用CRTP时,C++ 11/14/17中是否有一种方法可以访问父类中的子类成员?

template <typename T>
class A {
public:
    using C = typename std::result_of<decltype(&T::next)(T)>::type;
};

class B : A<B> {
public:
    int next() { ... };
};
Run Code Online (Sandbox Code Playgroud)

这应该导致A<B>::CB::C存在int.

Rei*_*ica 9

不,我担心这是不可能的.当A<B>用作基类时,必须将其实例化(因为基类必须完整),但此时B仍然是不完整的类型,因此无法在其中访问其成员A<B>.