这是具有通用向量和对类型的向量对的后续,模板的模板。
我希望能够使用std::vector
or调用方法,同时指定 (Pair of x,y) 的stxxl:vector
模板参数。vector
具体来说,signatrue 方法可能如下所示:
template<typename t_x, typename t_y,
template<typename, typename> class t_pair,
template<typename...> class t_vector>
method(t_vector<t_pair<t_x,t_y>> &v)
不幸的是,当像这样指定签名时,不可能传递 a stxxl:vector
as t_vector
。它导致以下编译错误:
sad.hpp:128:5: note: template argument deduction/substitution failed:
program.cpp:104:52: error: type/value mismatch at argument 1 in template parameter list for ‘template<class ...> class t_vector’
method(coordinates);
^
program.cpp:104:52: error: expected a type, got ‘4u’
program.cpp:104:52: error: type/value mismatch at argument 1 in template parameter list for ‘template<class ...> class t_vector’
program.cpp:104:52: error: expected a type, got ‘2097152u’
问题是如何修改方法签名,以便能够stxxl::vector
使用 ? 替代现有代码std::vector
?
更新为什么我为向量使用嵌套模板:我可能弄错了,但我希望编译器在上述方法中为变量键入类型。
例如,我正在构建一个vector
或一个queue
std::vector<t_x> intervals(k * k + 1);
typedef std::tuple<std::pair<t_x,t_y>,std::pair<t_x,t_y>, std::pair<t_x,t_y>, uint> t_queue;
std::queue <t_queue> queue;
哪个应该 uint32_t or uint64_t
取决于对元素的类型是uint32_t or uint64_t