【发布时间】:2015-02-12 22:39:22
【问题描述】:
我真的找不到它的任何用途。我的第一个想法是,我可以用它来实现“契约式设计”,而无需使用这样的宏:
struct S
{
S(constexpr int i) : S(i) { static_assert( i < 9, "i must be < 9" ); }
S(int i); //external defintion
char *pSomeMemory;
};
但这不会编译。我想我们也可以使用它来引用相同的变量,而无需创建额外的内存,当我们想要避免使用 get/setter 以使来自用户的一个成员的实例为只读时:
class S
{
private:
int _i;
public:
const int & constexpr i = _i;
};
但以上都没有实际编译。谁能告诉我为什么要引入这个关键字?
【问题讨论】:
-
This reference (cppreference.com) 应该是一个好的开始,因为它甚至有一个示例
-
它们旨在替代预处理器宏的一些更常见用途。
-
您需要阅读基本参考,上面的链接会有所帮助,阅读constexpr tag中的一些问题也可能会有所帮助
-
你可以用它们做各种奇怪的事情。 crazycpp.wordpress.com/2014/10/17/…
标签: c++ c++11 language-lawyer compile-time