gpt4 book ai didi

c++ - 尝试将 remove_reference 作为函数参数传递

转载 作者:行者123 更新时间:2023-11-28 04:19:59 28 4
gpt4 key购买 nike

所以,我正在做功课,作为代码的一部分,我需要创建一个具有 3 个参数的函数,前两个是指针或迭代器,它们构成特定的元素 block ,第三个参数是具有一个参数的函数,并且该参数与两个指针或迭代器之间的 block 的元素类型相同。

如果我只使用它就可以工作

decltype<*p1+*p1>

其中 p1 是指向元素 block 的指针,但如果元素是复数,它就不起作用。

我尝试了以下方法,但它不起作用

template <typename Type>
bool Fun(Type p1,Type p2,bool(*f)(std::remove_reference<decltype(p1)>::type))

并说以下内容:错误:在“(”标记之前应有“,”或“...”

最佳答案

为什么不使用 iterator traits ?它们在标准库中是有原因的...

template <typename InputIt>
bool Fun(
InputIt first,
InputIt last,
bool(*f)(std::iterator_traits<InputIt>::value_type)
)

此外,您可以考虑“鸭子输入”函数参数:

template <typename InputIt, typename F>
bool Fun(
InputIt first,
InputIt last,
F f
)
{
using std::iterator_traints<InputIt>::value_type;
value_type x { whatever() };
do_something_with(f(x));
}

这通常会让你做一些你真正想做但没想到会尝试的事情......

关于c++ - 尝试将 remove_reference 作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com