std::remove_reference_t> does the order matter?

huangapple go评论91阅读模式
英文:

std::remove_reference_t<std::remove_cv_t<T>> does the order matter?

问题

以下是翻译好的部分:

"在以下情况下,应用的顺序是否重要?"

std::remove_reference_t<std::remove_cv_t<T>>

std::remove_cv_t<std::remove_reference_t<T>>

在什么情况下,如果有的话,顺序是否重要?

英文:

Does it matter in which order the following is applied ?

std::remove_reference_t&lt;std::remove_cv_t&lt;T&gt;&gt;

or

std::remove_cv_t&lt;std::remove_reference_t&lt;T&gt;&gt;

In what scenario, if any, does the order matter ?

答案1

得分: 8

有些情况下,这两个类型特征会产生不同的结果。例如,让我们考虑 T = const int&amp;

  1. std::remove_cv_t 将移除顶层的 cv 限定符,将 const int&amp; 转换为 const int&amp;,因为没有顶层的 cv 限定符。然后,std::remove_reference_t 将返回 const int

  2. 在第二种情况下,std::remove_reference_t 将返回 const int,而 std::remove_cv_t 将其转换为 int

简单演示

英文:

There are cases when these two type traits produce different results. For example, let's consider T = const int&amp;.

  1. std::remove_cv_t will remove top-level cv-qualifier, turning const int&amp; into const int&amp;, because there is no top-level cv-qualifier. std::remove_reference_t will then return const int.

  2. In the second case, std::remove_reference_t will return const int, and std::remove_cv_t will transform it into int.

Simple demo

huangapple
  • 本文由 发表于 2020年1月6日 17:07:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/59609294.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定