v******y 发帖数: 84 | 1 第一个装逼通得过编译么?简直就是扯淡
constexpr隐含着const的意思,是implicitly indicates a const.
constexpr is an expression that can be evaluate into a constant,
during compiling when a variable is initiated.
比如
int x=20;
constexpr int y=x+1;
const X& foo() &
第二个&是要求foo是一个class的 method,foo这个function不会改变这个class fields
的值
比如
class X{
private:
int val;
...
const X & foo() &{
//you can not change X.val here
}
} |
|
A*******e 发帖数: 2419 | 2 在别人程序里看到的。
constexpr const char* x = "hello";
这里面的constexpr const是什么意思?
const X& foo() & {
...
}
第二个&是什么意思?
C++进化忒快了。 |
|
m******t 发帖数: 1171 | 3 ? : 和 if else的区别并不是这个。 他们都只evaluate一个分支。
他们的区别是:
? : 可以用在constexpr中,C++11的特性。
而if else不可以。 |
|
z*********n 发帖数: 1451 | 4
也放松一下,贴个以前写的编译时间计算int to Roman number的C++ metaprogramming
, 学生时在实验室天天就玩这种东西了:
class R2I {
const static int DIG;
public:
constexpr static char IN[] = "MCDXLVI"; ///This is the INPUT number;
const static int OUT;
};
template struct ID {};
template <> struct ID <'I'> { static const int I = 0; static const int V = 1
; };
template <> struct ID <'V'> { static const int I = 1; static const int V = 5
; };
template <> struct ID <'X'> { static const int I = 2; static const int V =
10... 阅读全帖 |
|
w***g 发帖数: 5958 | 5 1. nullptr和constexpr这两个关键字定义的一点美感也没有。形式上已经和Ritchie高
下立现了。要我说还不如把NULL引入成关键字来的好。这样实际上还是跟C兼容的。
2. 什么时候用auto什么时候不适合用或者不能用auto不是很直观。
除了上面两点吹毛求疵的问题以外,我觉得C++更容易写了。 |
|
t****t 发帖数: 6806 | 6 constexpr我也确实不是很喜欢, 感觉为优化而优化了, 还不如引入var-size array呢.
nullptr我倒觉得没什么, 从一致性的角度来说, NULL这样的大写习惯上是macro, 不合
适成为关键字.
auto我觉得没问题, 多写写就清楚了:) |
|
w***g 发帖数: 5958 | 7 1. nullptr和constexpr这两个关键字定义的一点美感也没有。形式上已经和Ritchie高
下立现了。要我说还不如把NULL引入成关键字来的好。这样实际上还是跟C兼容的。
2. 什么时候用auto什么时候不适合用或者不能用auto不是很直观。
除了上面两点吹毛求疵的问题以外,我觉得C++更容易写了。 |
|
t****t 发帖数: 6806 | 8 constexpr我也确实不是很喜欢, 感觉为优化而优化了, 还不如引入var-size array呢.
nullptr我倒觉得没什么, 从一致性的角度来说, NULL这样的大写习惯上是macro, 不合
适成为关键字.
auto我觉得没问题, 多写写就清楚了:) |
|
V9 发帖数: 143 | 9 manybe constexpr can help |
|
|
b*******s 发帖数: 5216 | 11 我换constexpr怎么样
这个总不是meta programming了吧 |
|
q****x 发帖数: 7404 | 12 要记的太多啦。比如big 3 => big 5,lambda的语法,constexpr vs const,等等。
为了向下兼容,只增不减。上一代标准就几百页,这次有没有翻番?要无限膨胀下去?
不能用奥多姆剃刀原则来设计吗? |
|
A*******e 发帖数: 2419 | 13 constexpr和const不是重复了吗?虽然语义略有区别。 |
|
b*******s 发帖数: 5216 | 14 Okay I will give you an example. Suppose you have already known something
about meta programming.
If I want to use F(1) F(1000) and F(10000) in my application. Maybe like
this,
constexpr int64_t val = F(1) + F(1000) + F(10000);
Do you think there any cache issue? No, obviously
And F(1) F(1000) F(10000) are in different cache lines in your solution.
Or you should design a complicated hash function.
We don't like runtime things. That's modern c++ |
|
|
w***g 发帖数: 5958 | 16 没见过const这么用的。如果是constexpr,则函数会在编译时被求知。 |
|