2017-08-25 7 views
0

Ich weiß, dass der C++ - Concepts-Vorschlag unter anderem dazu gedacht ist, Beschränkungen für Template-Parameter (zB eine "Sequence") über die aktuelle Situation zu setzen, in der alles, was kompiliert werden kann, gut genug ist (und die Fehlermeldungen) sind miserabel).Kann ein Namespace ein Konzept sein?

Aber - was ist mit Namespaces? Ich meine, momentan können wir sie nicht als Template-Parameter verwenden, aber man würde denken, dass wenn eine Methode nur die statischen Methoden und Member einer Klasse verwendet, auch ein Namespace eine befriedigende Sache sein sollte, um sie zu übergeben. Unterstützt das die aktuelle Version von/current implements des Concepts-Vorschlags? Wenn nicht, wurde dies berücksichtigt und abgelehnt oder einfach nicht berücksichtigt?

Verwandte Frage:

Is a class with only static methods better than a namespace with only non-member functions?

+6

Sie können keine Namespaces übergeben. – Yakk

+0

@Yakk: Ich möchte sie nicht weitergeben, aber vielleicht kann ich sie als Vorlageparameter verwenden. – einpoklum

+6

Sie können das nicht tun. Also, was ist deine Frage? – Yakk

Antwort

2

Konzepte fügt keinen Mechanismus Namespaces bei der Kompilierung oder zur Laufzeit zu übergeben. Es gibt also keine Möglichkeit, einen Namen gegen einen Concet- oder Parametercode mit einem Namespace zu testen, indem Makros gesperrt werden.

Die Reflexion TS kann Reflexion über Namespaces erlauben (ich bin nicht aktuell über seinen aktuellen Status), aber das ist orthogonal zu Konzepten. Vielleicht kann die Verdinglichung und Reflexion von Namespaces manipuliert werden, um Konzeptkonzeptionen von Namespaces zu ermöglichen und sie irgendwie zu passieren, aber wenn es heute so wäre, könnte es nicht morgen und umgekehrt sein, da es auf zwei verschiedenen plastischen Merkmalen beruht, wo solch ein Nebeneffekt zufällig wäre Beste.

+0

Bumm. Vielen Dank. – einpoklum