2015-12-20 2 views
8

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

+0

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) –

+3

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. –

+0

Scheint, es hat es nicht geschafft, und ja, ich wäre überrascht, aber sehr glücklich! –

Antwort

Verwandte Themen