gpt4 book ai didi

c++ - std::ignore 的要求

转载 作者:IT老高 更新时间:2023-10-28 22:35:56 25 4
gpt4 key购买 nike

C++11 引入了一个名为 std::ignore 的对象:

const /* unspecified */ ignore;

为了简洁,让

typedef decltype(std::ignore) T; 

据我所知,由于 std::tie 的规范,T 的唯一要求是它是 CopyAssignable [C++11, 20.4.2.4:7]。

在 g++-4.8 中,我发现 T 也是 DefaultConstructible (例如,T x; 编译)。这是实现定义的行为吗?

(如果对T还有其他要求我遗漏了,请详述。)

最佳答案

标准对 ignore 的类型没有要求,除了它是一种不同于所有其他类型的类型。

标准库容器允许的任何机制ignoretie 一起使用时获得所需的行为取决于该标准库的实现。图书馆可能给它一个 template<T&> operator=(const T&)过载,或者它可能会使用其他一些机制来使其工作。标准没有说。所以它甚至不必是 CopyAssignable .

请注意 tie仅当您专门使用 ignore 时才具有特殊行为。如果您使用自己创建的其他值(由于该类型没有要求,因此不能保证您能够做到),您将获得未定义的行为。

关于c++ - std::ignore 的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721884/

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