gpt4 book ai didi

c++ - STL typedef 的可移植性如何?

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

以下代码是否可移植?

template<typename In>
struct input_sequence_range : public pair<In,In> {
input_sequence_range(In first, In last) : pair<In,In>(first, last) { }
};

template<typename Arr>
input_sequence_range<Arr*> iseq(Arr* a,
typename iterator_traits<Arr*>::difference_type n)
{
return input_sequence_range<Arr*>(a, a + n);
}

template<typename Iter>
input_sequence_range<Iter> iseq(Iter first, Iter last)
{
return input_sequence_range<Iter>(first, last);
}

具体来说,我质疑在 std::iterator_traits<>::difference_type 上重载的可移植性。如果它的类型定义为 int*(可能很奇怪;我认为标准不禁止这样做),那么为 int 数组调用 iseq() 将是不明确的。

关于 iterator_traits<> 类型定义的标准保证是什么?

最佳答案

difference_type 必须是整数类型,所以 int* 不可用。

关于c++ - STL typedef 的可移植性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/538623/

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