c – 将const添加到引用

c – 将const添加到引用,第1张

概述我想通过typedef const A B;将const添加引用类型. 不知怎的,它不起作用.这在c中不可能吗? 测试: #include <type_traits>typedef int& A;typedef const A B; // <-- Add const// typedef std::add_const<A>::type B; // also doesn't work.s 我想通过typedef const A B;将const添加到引用类型.

不知怎的,它不起作用.这在c中不可能吗?

测试:

#include <type_traits>typedef int& A;typedef const A B;  // <-- Add const// typedef std::add_const<A>::type B;  // also doesn't work.static_assert(std::is_const<typename std::remove_reference<        B>::type>::value,"is const");int main() {    return 0;}

编译错误:

add2.cpp:5:1: error: static assertion Failed: is const static_assert(std::is_const<typename std::remove_reference< ^~~~~~~~~~~~~
解决方法

Somehow it doesn’t work. Is this not possible in c++?

不是你的方式. typedef不像预处理器宏那样工作.

typedef int& A;typedef const A B;

不翻译成

typedef int& A;typedef const int& B;

常数

typedef const A B;

适用于A,而不是A的int部分.由于引用在C中是不可变的,因此const A与类型点视图中的A相同.

您可以使用:

typedef int const& B;

如果你想从A派生它,你可以使用:

using B = typename std::remove_reference<A>::type const&;

如果您能够使用C 14或更高版本,则可以将其简化为:

using B = std::remove_reference_t<A> const&;
总结

以上是内存溢出为你收集整理的c – 将const添加到引用全部内容,希望文章能够帮你解决c – 将const添加到引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存