std::remove_cv和std::decay
时间: 2023-08-16 21:14:22 浏览: 343
std::remove_cv和std::decay都是C++标准库中的模板类,用于处理类型的特性。
std::remove_cv用于移除类型中的const和volatile修饰符。在C++11中,我们需要使用typename std::remove_cv<T>::type的形式来获取移除修饰符后的类型。而在C++14及其后的标准中,我们可以使用std::remove_cv_t<T>的形式来简化代码。\[2\]
std::decay用于对一个类型进行退化处理。它会移除类型中的引用修饰符,并将数组类型转换为指针类型。在C++11中,我们需要使用typename std::decay<T>::type的形式来获取退化后的类型。\[1\]在C++14及其后的标准中,我们可以使用std::decay_t<T>的形式来简化代码。\[2\]
总结来说,std::remove_cv用于移除类型中的const和volatile修饰符,而std::decay用于对类型进行退化处理,移除引用修饰符并将数组类型转换为指针类型。
#### 引用[.reference_title]
- *1* [C++11的std::is_same和std::decay使用与源码解析](https://blog.csdn.net/weixin_43798887/article/details/118311126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [【C++ 泛型编程 入门篇】C++元模版中std::remove_reference_t和std::remove_cv_t的运用](https://blog.csdn.net/qq_21438461/article/details/131193312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [C++的std::is_same与std::decay](https://blog.csdn.net/sinat_31608641/article/details/124598754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文