优雅的方式来使用模板发送模板功能
我有一个模板函数,说,这样的排序功能
在哪里
它可能是迭代器或指针。
我有另一个模板函数,在不同的情况下使用各种计算机:
现在我想总结一下
, 使用具有相同接口的任何排序功能 , 我。
, 让我们说
有优雅的方式来实现这一目标吗?
</typename></typename></typename></typename></typename>
template <typename iter="">
void sort1/Iter first, Iter last/ {...}
template <typename comp="" iter,="" typename="">
void sort1/Iter first, Iter last, Comp comp/ {...}
在哪里
Iter
它可能是迭代器或指针。
我有另一个模板函数,在不同的情况下使用各种计算机:
template <typename iter="">
void func_using_sort/Iter first, Iter last, int cond/ {
if /cond == 0/ {
sort1/first, last, []/const auto& a, const auto& b/ {
// code 1
}/;
} else if /cond == 1/ {
sort1/first, last, []/const auto& a, const auto& b/ {
// code 2
}/;
} else if /cond == 2/ {
sort1/first, last/;
}
}
现在我想总结一下
func_using_sort
, 使用具有相同接口的任何排序功能 , 我。
sort1
, 让我们说
template <typename iter="">
void sort2/Iter first, Iter last/ {...}
template <typename comp="" iter,="" typename="">
void sort2/Iter first, Iter last, Comp comp/ {...}
有优雅的方式来实现这一目标吗?
</typename></typename></typename></typename></typename>
没有找到相关结果
已邀请:
2 个回复
冰洋
赞同来自:
:
问题是如何通过此功能的函数模板或一组过载函数。 目前在这个问题上没有一个非常纯粹的解决方案,但下面的工作 C++14 使用普遍 lambda:
func_using_sort/first, last, []/auto... args/{ return sort2/args.../; }, cond/;
这种模式的更一般版本,使完美发货是Sfinae友好的,并关心其他极端情况,您可以找到,例如,在
http://www.open-std.org/jtc1/s ... .html
标准委员会 C++.:
然后他会的
或者,您可以包装函数
在函数类中,在这种情况下,您可以将其直接传输到上面定义的函数。 目前,遗憾的是,没有办法将功能的模板直接转换为函数的参数。 这就是上述文章和其他文章正在努力解决的问题。
</decltype></typename>
郭文康
赞同来自:
</iter></typename></typename></typename></typename>