我想實現一個功能,可以讓我做出這樣的模板矢量
// veca is a vector of tuples in my case
columnViewOfTuple<0>(veca);
呼叫我實現這樣的功能如下
template<int N>
struct myfunction {
template<typename T, typename R>
std::vector<R> operator() (T& container)
{
std::vector<R> myvector;
for(typename T::iterator it = container.begin(); it!=container.end(); it++)
myvector.push_back((R)(*it).template get<N>());
return myvector;
}
};
每當我叫myfunction的< 0>( vec5),其中vec5是一些元組的向量,它說
main.cpp:在函數'int main()'中: main.cpp:156:錯誤:衝突聲明'myfunction < 0> vec5' main.cpp:155:錯誤:'vec5'之前的聲明爲'main():: vec1_t vec5'
你們知道如何解決這個問題嗎?
感謝
爲什麼要將int N作爲模板參數而不是函數參數? – JoshD 2010-10-01 21:50:44
請參閱,例如:http://stackoverflow.com/questions/1600464/ – 2010-10-01 21:51:58
這是一個要求。我需要N作爲模板參數 – Bob 2010-10-01 23:18:42