我希望能够将两个连接的迭代器作为一个传递,以利用一些类似 STL 的算法(例如 TBB),因此我正在制作一个自定义迭代器来连接它们,但遇到了一些障碍。
我需要专门化迭代器,但是它不允许我一般地指定模板参数。
像这样:
template<typename IT1, typename IT2>
struct multi_iter : public std::iterator<
std::output_iterator_tag,
std::pair<IT1::value_type&, IT2::value_type&> >
{
.
:
但是它会让我这样做,但这不是我想要的
template<typename IT1, typename IT2>
struct multi_iter : public std::iterator<
std::output_iterator_tag,
std::pair<int&, int&> >
{
.
:
我收到此错误
multi_iter.cpp:12:53: error: template argument 2 is invalid
multi_iter.cpp:12:55: error: template argument 2 is invalid
multi_iter.cpp:12:55: error: template argument 4 is invalid
multi_iter.cpp:12:55: error: template argument 5 is invalid
.
:
我确实有 std::pair
任何帮助将不胜感激。
谢谢
最佳答案
value_type
是 IT1
的依赖类型,因此您必须在那里指定 typename
typename IT1::value_type
关于c++ - 使用 Typedef 指定模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679613/