2013-09-30 69 views
0

我需要優化用於部分和使用簡單的網格搜索找到stxxl矢量的塊大小BlkSize_參數。至於將其指定爲stxxl矢量似乎用它作爲向量生成模板參數的唯一途徑,我明白,我想用這將給出塊大小模板參數由partial_sum功能使用的輸出時間某種遞歸函數模板。我還需要將矢量大小作爲參數。錯誤以遞歸模板函數使用STXXL模板在C++

這裏是我的代碼:

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線。

可能是什麼問題?

+0

哪條線你的錯誤嗎? – doctorlove

+0

@doctorlove,對'的typedef ...' – FrauHahnhen

回答

2

它看起來像你缺少一個typename告訴result是一種類型:

typedef typename stxxl::VECTOR_GENERATOR< 
      int, 
      1, 
      1, 
      size, 
      stxxl::RC, 
      stxxl::lru>::result xxlvector; 

result的解釋在你的代碼依賴於模板參數size,並且在C++的特殊規則它解釋爲除非使用typename關鍵字非類型。 有關更多信息,請參見Where and why do I have to put the 「template」 and 「typename」 keywords?

+0

沒錯,這固定它,非常感謝! – FrauHahnhen