我用类似于std::list
的API实现了一个列表,但无法编译
struct A { my_list<A> v; };
列表具有一个基类,该基类具有成员base_node
,该成员具有prev
和next
字段,并且node
(从base_node
派生)保留T
值(即列表的模板参数)。编译错误是>
error: ‘node<T>::val’ has incomplete type T val; ^~~ note: forward declaration of ‘struct A’
我查看了GCC代码,似乎它们保存了一个大小为T的字节缓冲区,因此不确定其如何工作。
std::list
如何设法在其节点中存储A
?
[更新]
struct A { };
template <typename T>
struct B : public A
{
using B_T = B<T>;
T t;
};
template <typename T>
class C
{
using B_T = typename B<T>::B_T; // this fails to compile
//using B_T = B<T>; // this compiles fine
};
struct D { C<D> d; };
我用与std :: list类似的API实现了一个列表,但是它无法编译struct A {my_list v; }; The list has a base class that has a member a base_node which has the prev and next ...
在您的简化示例中