Per quanto ne so, ci sono due proposte per la sintassi di chiamata uniforme per C++ 17 (dove l'altra è chiamata sintassi di chiamata unificata).In che modo la proposta C++ 17 per la sintassi di chiamata uniforme intende gestire gli spazi dei nomi?
Leggendoli, non vedo come intendano gestire gli spazi dei nomi.
Esempio:
class Class {...}
namespace MyNamespace {
void f(Class x, Class y);
}
Intende essere possibile chiamare questo metodo usando qualcosa come:
Class a, b;
a.MyNamespace::f(b);
o fare entrambe la funzione libera, e la classe devono essere definiti nello stesso namespace ?
Riferimenti:
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
Come nota personale, mi piacerebbe trovare è veramente pulito se qualcosa di simile, che consente il concatenamento di chiamate di funzione, in cui aggiunti allo standard C++. Utilizzando l'operatore di pipe, come boost range e Eric Nieblers range v3 è solo complicato (in più ha lo svantaggio di avere priorità di lover rispetto all'operatore ==) –
La direzione EWG corrente è quella di consentire a 'f (x, y)' di chiamare 'xf (y) 'se la ricerca ordinaria non riesce a trovare una' f' valida, e non viceversa. Non penso che ci sia ancora un foglio che inchioda tutti i dettagli, ma sarei sorpreso se volessero toccare chiamate qualificate. –
Sembra che non ce l'abbia fatta, e sì sarei sorpreso, ma felice! –