テンプレートにパラメーターとして渡される別のテンプレートの例を見つけました。
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 コンパイラは「アロケータ: あいまいなシンボル」と不平を言っています。
これはコンパイラの問題ですか、それともこのコードに何か問題がありますか?