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()的确是一个返回最小允许持续时间的静态方法: