Wie es in einer Reihe von Gesprächen und Aufsätzen von Andrew Sutton gezeigt, Concepts Lite Vorschlag hat Konzept-basierte Überladung-Funktion und zur gleichen Zeit hat keine Vorstellung von Concept Map, das heißt Template-Argumente werden gegen Konzepte vollständig von einem Compiler überprüft. In Anbetracht dessen ist nicht klar, wie sie ein Problem lösen würden, das in einem Aufsatz von Siek und Gregor aus dem Jahr 2005 beschrieben wurde, "Explicit model definitions are necessary". Kurz gesagt, das Problem konnte mit dem folgenden Zitat aus der Zeitung festgestellt werden.Wie sie Probleme mit Konzept-basierte Überladung ohne explizite Modelle vermeiden (aka Konzept Karten)
So, there are certain input iterator types (such as istream_iterator) that would be misclassified as forward iterators. What is the danger in this? Some algorithms dispatch based on Input_iterator vs. Forward_iterator.
(Es gibt weitere Beispiele neben Iteratoren though.)
Ja, ich bin mir dessen bewusst, dass oben erwähnte Papier als C++ 0x-Konzepte, aber das Problem scheint „generic“ über Konzepte zu sein Vorschläge.
@Columbo Ich habe versucht, es in n4377 Syntax umschreiben; überprüfen Sie bitte, ob ich es richtig gemacht habe (ich habe momentan keinen Zugriff auf einen Compiler mit Konzepten). – ecatmur
Die Syntax, die Sie hatten, war korrekt, aber ein bisschen seltsam darin, dass Sie keinen require-Ausdruck brauchen, wenn Sie nicht auf seine Parameter verweisen müssen. Ich habe es vereinfacht. – Casey
@Casey brilliant, danke. – ecatmur