gpt4 book ai didi

c++ - 使用 std::iterator_traits<> 时出现不清楚的编译时错误

转载 作者:行者123 更新时间:2023-11-28 01:30:36 25 4
gpt4 key购买 nike

有一个代码给出了一个错误,我完全不清楚。我想要的是通过 iterator_traits 传递一个指向结构/类成员的指针.

template<typename Iter, typename S>
S mean(Iter begin, const Iter& end, S std::iterator_traits<Iter>::value_type::* v)
{
//...
}

但即使在声明此模板函数时,MSVS2015 也会在上面的代码中给出以下错误:

Error C2653 'value_type': is not a class or namespace name

然而,没有 iterator_trais<...>

template<typename Iter, typename S>
S mean(Iter begin, const Iter& end, S Iter::value_type::* v)
{
//...
}

一切都正确编译。

为什么它不能识别value_type作为类(class)名称?

编译器错误?

最佳答案

这是一个简单的语法错误。你的意思是:

template<typename Iter, typename S>
S mean(
Iter begin,
const Iter& end,
typename std::iterator_traits<Iter>::value_type S::* v)
{
// ...
}

关于c++ - 使用 std::iterator_traits<> 时出现不清楚的编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51694890/

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