当前位置:  开发笔记 > 编程语言 > 正文

C++ constexpr关键字放置

如何解决《C++constexpr关键字放置》经验,为你挑选了1个好方法。

我最近开始在我的代码中使用更多的C++ 11功能,我一直想知道constexpr关键字的位置是否与常量类型之前或之后不同.

风格1:

constexpr int FOO = 1;
constexpr auto BAR = "bar";

风格2:

int constexpr FOO = 1;
auto constexpr BAR = "bar";

样式2是我喜欢放置const关键字的方式,constexpr以相同的方式放置会给代码带来一些一致性.然而,这被认为是不好的做法,或者风格2还有其他问题,因为我并没有真正看到有人这样写.



1> chris..:

这是一个符,如long,short,unsigned,等它们都可以到处移动.例如,以下是两个等效且有效的声明:

int long const long unsigned constexpr foo = 5;
constexpr const unsigned long long int foo = 5;

但按照惯例,constexpr会出现在类型名称之前.如果你把它放在后面,它会让别人感到困惑,但它在技术上是有效的.由于constexpr服务的目的不同const,我认为将它放在右边并没有同样的好处.例如,你做不到int constexpr * constexpr foo.事实上,int constexpr * foo不允许你重新分配foo,而不是应用于什么foo指向,所以如果你期望同样的语义,将它放在右边可能会产生误导const.

总结一下:

int constexpr foo = 0; // valid
int constexpr * constexpr foo = nullptr; // invalid
int* constexpr foo = nullptr; // invalid
int constexpr * foo = nullptr; // valid
constexpr int* foo = nullptr; // valid and same as previous

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有