Ce code est le plus susceptible égale à ceci:
TimePoint now_ = TimePoint::min();
Cela signifie que, min()
est une méthode statique, et l'appel à l'aide d'un exemple est le même que de l'appeler comme cela, l'instance est simplement utilisé pour déterminer le type. Pas de magie noire, c'est juste deux syntaxes pour faire la même chose.
Pourquoi le code en question compile: now_
est déjà déclarée par le côté gauche de la ligne, de sorte que quand il est utilisé pour l'initialisation sur le côté droit, le compilateur sait déjà en son genre et est en mesure d'appeler la méthode statique. En essayant d'appeler les non-statique méthode devrait donner un message d'erreur (voir le commentaire de @BenVoigt ci-dessous).
Comme l'a démontré par le fait que vous avez eu à écrire cette question, la syntaxe, la question n'est pas la plus claire. Il peut être tentant si le nom de type long, et est peut-être justifiable dans une variable de membre des déclarations d'initialiseur (dont la question de code est). Dans le code à l'intérieur des fonctions, auto
est la meilleure façon de réduire le nombre de redoublements.