我发现这个作为参数传递给模板的另一个模板的例子:
template<template<typename T> class AllocatePolicy>
struct Pool {
void allocate(size_t n) {
int *p = AllocatePolicy<int>::allocate(n);
}
};
template<typename T>
struct allocator { static T * allocate(size_t n) { return 0; } };
int main()
{
// pass the template "allocator" as argument.
Pool<allocator> test;
return 0;
}
这对我来说似乎完全合理,但 MSVC2012 编译器抱怨“分配器:不明确的符号”
这是编译器问题还是这段代码有问题?