recursionvariables声明

我刚刚在愚蠢/ ManualExecutor.h中看到了这个黑魔法

TimePoint now_ = now_.min(); 

在grep了整个库源代码之后,我现在还没有看到variables的定义。 这里发生了什么事? 这是有效的一些recursionvariables声明?

该代码很可能与此相同:

 TimePoint now_ = TimePoint::min(); 

这意味着, min()是一个静态方法,使用实例调用它和调用它是一样的,实例只用于确定types。 没有涉及黑魔法,这只是两个语法做同样的事情。

至于为什么有问题的代码编译: now_已经now_的左边声明了,所以当它用于右边的初始化时,编译器已经知道它的types,并且可以调用静态方法。 尝试调用非静态方法应该给出错误(请参阅下面的@BenVoigt的注释)。

正如你必须写这个问题所certificate的那样,问题中的语法并不是最清楚的。 这可能是诱人的,如果input名称为long,并且可能在具有初始值设定项的成员variables声明(问题代码是)中是合理的。 在函数内的代码中, auto是减less重复的更好方法。

挖掘代码显示TimePoint是chrono :: steady_clock :: time_point的别名,其中min()的确是一个返回最小允许持续时间的静态方法:

http://en.cppreference.com/w/cpp/chrono/time_point/min

Interesting Posts