Soweit ich weiß, gibt es zwei Propsals für einheitliche Aufrufsyntax für C++ 17 (wo der andere als Unified Call Syntax bezeichnet wird).Wie beabsichtigt der C++ 17-Vorschlag für eine einheitliche Aufrufsyntax, Namespaces zu behandeln?
Wenn ich sie lese, kann ich nicht sehen, wie sie mit Namespaces umgehen wollen.
Beispiel:
class Class {...}
namespace MyNamespace {
void f(Class x, Class y);
}
Wird es möglich sein, diese Methode zu nennen, mit so etwas wie: beide
Class a, b;
a.MyNamespace::f(b);
Oder die freie Funktion, und die Klasse müssen im selben Namensraum definiert werden ?
Referenzen:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4165.pdf
Als eine persönliche Note, würde ich finde es wirklich toll, wenn so etwas wie diese, die Verkettung von Funktionsaufrufen ermöglicht, wo man den C++ Standard hinzugefügt. Die Verwendung des Röhrenoperators als Boost Range und Eric Nieblers Range v3 ist nur kompliziert (plus hat den Nachteil, Liebhaberpriorität als Operator == zu haben) –
Aktuelle EWG-Richtung ist es 'f (x, y)' zu erlauben, 'xf aufzurufen (y) 'wenn gewöhnliches Nachschlagen fehlschlägt, ein lebensfähiges' f 'zu finden, und nicht umgekehrt. Ich glaube nicht, dass es noch ein Papier gibt, das alle Details festhält, aber ich wäre überrascht, wenn sie qualifizierte Anrufe anfassen möchten. –
Scheint, es hat es nicht geschafft, und ja, ich wäre überrascht, aber sehr glücklich! –