在C++中使用 STXXL 模板的递归模板函数中出错
Error in a recursive template function using STXXL templates in C++
我需要优化 stxxl 向量的块大小BlkSize_
参数,以便使用简单的网格搜索找到部分和。由于为 stxxl 矢量指定它的唯一方法似乎将其用作矢量生成器中的模板参数,我知道我想使用一些递归模板函数,该函数将输出给定块大小模板参数partial_sum函数使用的时间。我还需要携带一个矢量大小作为参数。
这是我的代码:
template<unsigned int size>
void TestPartialSum(int N) {
typedef stxxl::VECTOR_GENERATOR<
int,
1,
1,
size,
stxxl::RC,
stxxl::lru>::result xxlvector;
xxlvector v(N);
xxlvector res(N);
iota(v.begin(), v.end(), 5, 2);
std::cerr << "N = " << N << std::endl;
Profiler profiler;
std::partial_sum(v.begin(), v.end(), res.begin());
TestPartialSum<size / 2>(N);
return;
}
但是虽然struct stxxl::VECTOR_GENERATOR
正好需要 6 个参数 ( class Tp_, unsigned int PgSz_, unsigned int Pages_, unsigned int BlkSize_, class AllocStr_, stxxl::pager_type Pager_
),但我收到这个:
error: too few template-parameter-lists
对于typedef
行。
可能是什么问题?
看起来您缺少一个typename
来判断result
是一种类型:
typedef typename stxxl::VECTOR_GENERATOR<
int,
1,
1,
size,
stxxl::RC,
stxxl::lru>::result xxlvector;
result
的解释取决于代码中size
的模板参数,并且C++有一个特殊规则,将其解释为非类型,除非使用 typename
关键字。请参阅我必须在哪里以及为什么必须放置"模板"和"类型名称"关键字?了解更多信息。
相关文章:
- 类中私有结构的构造函数出错
- 字符串验证函数出错
- 我的类默认构造函数出错
- Dev-C++和Code::Blocks中的析构函数出错
- int对的哈希函数出错
- MSVC 编译器错误导致迭代器和友元函数出错
- 复制构造函数出错
- 使用 WinSock2 开发,使用 CreateThread() 函数出错
- 链接列表的Push_back函数出错
- 结构初始化中的隐式复制构造函数出错
- 异步函数出错
- 编译器错误消息错误:令牌之前的预期')' '*'。我的构造函数出错
- c++中使用std::bind和std::函数出错
- 在vector排序中使用c++模板函数出错
- 使用std::for_each lambda函数出错
- 二叉搜索树插入函数出错
- 调用类的函数出错
- c++使用删除函数出错
- 使用已删除的函数出错
- 调用构造函数出错