gpt4 book ai didi

c++ - add_lvalue_reference/add_rvalue_reference 和 cv 限定类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:13 29 4
gpt4 key购买 nike

cppreference.com关于std::add_lvalue_reference/std::add_rvalue_reference:

If T is an object type or a function type that has no cv- or ref- qualifier, provides a member typedef type which is T&&, otherwise type is T.

这是否意味着如果 T 是 constvolatile 则 T 不会转换为引用?如果不是,那么“没有 cv 限定符”是什么意思

最佳答案

Does it mean that if T is const or volatile than T is not converted to reference?

是的,但前提是它是一个函数。

cppreference 中的引述可能有点令人困惑。 cppreference有

If T is an object type or a function type that has no cv- or ref- qualifier, provides a member typedef type which is T&&, otherwise type is T.

这会让您相信 cv-qualifer 部分适用于对象和函数,但事实并非如此。实际text from the standard

an object type, a function type that does not have cv-qualifiers or a ref-qualifier, or a reference type

所以没有cv-qualifierref-qualifier 的任何对象类型和任何函数都会产生引用。带有 cv-qualifier 和/或 ref-qualifier 的引用或函数将产生 T


当您看到 cv-qualifier 时,表示 const 和/或 volatile 限定符,即它是 const 和/或 volatile 对象或 const 或 volatile 限定函数。 ref-qualifier 表示引用限定符,即函数只能在左值或右值上调用:void foo() &void foo() &&.

关于c++ - add_lvalue_reference/add_rvalue_reference 和 cv 限定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856978/

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