我想在容器上有一个模板和两种元组类型,这样我就可以将以下两个函数合并为一个:
template<typename Container>
void vblock(int row, int col, const Container& container) {
foreach( const typename Container::value_type& item, container ) {
cell(row, col, item);
++row;
}
}
template<typename container, typename T1, typename T2>
void vblock(int row, int col,
const std::list<typename boost::tuple<T1, T2> >& container) {
typedef boost::tuple<T1, T2> Tuple;
foreach( const Tuple& item, container ) {
cell(row, col, item.template get<0>());
cell(row + 1, col, item.template get<1>());
++col;
}
}
template<typename container, typename T1, typename T2>
void vblock(int row, int col,
const std::set<typename boost::tuple<T1, T2> >& container) {
typedef boost::tuple<T1, T2> Tuple;
foreach( const Tuple& item, container ) {
cell(row, col, item.template get<0>());
cell(row + 1, col, item.template get<1>());
++col;
}
}
我已经检查了C++ 模板 - 指定容器类型和它所拥有的容器元素类型以及使用 STL 容器和 typedef 的 C++ 模板类,但它们没有回答我的问题。
适合 STL 容器的简单 C++ 模板问题与我的问题最相似,但我不知道如何为 boost::tuple 添加模板。谢谢!