Why this work
class DataRefsTree;
class DataRefsTreeComparator {
public:
inline bool operator()(const DataRefsTree* inFirst, const DataRefsTree* inSecond) const;
};
class DataRefsTree : public DataTree<AbstractDataRef*, DataRefsTree, STreeHolderSet<DataRefsTree, DataRefsTreeComparator>> {
public:
And this doesn't work
template <typename Data> class BaseTree;
class BaseTreeComparartor {
public:
template <typename Data> inline bool operator()(const BaseTree<Data>* inFirst, const BaseTree<Data>* inSecond) const;
};
template <typename Data> class BaseTree :public DataTree<Data, BaseTree<Data>, STreeHolderSet<BaseTree<Data>, BaseTreeComparator>>;
class DataRefsTree;
class DataRefsTree :public BaseTree<AbstractDataRef> {
error class sasl::AbstractDataRef incomplete type is not allowed. How fix it?