我有以下类型:
typedef unsigned int uint32;
typedef void* ptr;
struct memory_options {};
struct memory_provider {};
template <typename options>
struct memory_track {};
template <typename options>
struct no_memory_track : public memory_track<options> {};
template<typename options>
struct defrag_memory_track : public memory_track<options> {};
template<typename options>
struct full_memory_track : public memory_track<options> {};
template <typename options, typename prov, typename track>
struct memory_algorithm : public track < options > {};
int main()
{
}
此类型用于定义自定义内存管理器。
问题是该类memory_algorithm
将从另一个类继承,该类将始终采用template parameter
代表memory_options
类,我称之为options
。基类可能是它的部分特化memory_track
或子类,因此在memory_algorithm
我传递了 2 个模板参数中,一个代表类名 - 即track
- 另一个代表memory_options
类 - 即options
- 现在每当我尝试使用示例测试编译代码时使用 GCC 和 Visual C++ 2008 的单元我得到了错误:
对于视觉 C++:
在 '<' 之前缺少 ','
请参阅对正在编译的类模板实例化“memory_algorithm”的引用
对于海湾合作委员会:
错误:“<”标记之前的预期模板名称
错误:在“<”标记之前应为“{”
错误:“<”标记之前的预期不合格 ID
有什么问题以及如何解决?