erfordert, dass der Typ T gemäß dies CopyInsertable ist.
Allerdings kompilieren Sie das folgende Programm mit failes ( clang , GCC, Visual; beide ohne c ++ 11 ), sofern ich keinen öffentlichen Zuweisungsoperator zur Verfügung stelle.
%Vor%Warum muss ich diesen Zuweisungsoperator bereitstellen? Ich hatte den Eindruck, dass das Kopierkonstrukt ausreichend war.
P.S. Ich konnte nicht den Platz im Standard finden, wo dies definiert ist, also wenn Sie auf die Referenz verweisen könnten, wäre ich sehr dankbar
Die Referenz, die Sie angeben , gilt für C ++ 11. Der C ++ 03-Standard hat jedoch strengere Anforderungen an Typen, die in Containern gespeichert werden können:
23.1 Containeranforderungen [lib.container.requirements]
...
Der Typ der Objekte, die in diesen Komponenten gespeichert sind, muss den Anforderungen von CopyConstructible-Typen (20.1.3) und der zusätzlichen Anforderungen von Zuweisbare -Typen.
(Hervorhebung von mir.) Diese Anforderungen wurden in C ++ 11 stark gelockert und beziehen sich normalerweise auf die spezifischen Operationen, die an Containern ausgeführt werden. In diesem Standard wäre Ihr Code gültig, da die einzige Voraussetzung wäre, dass A
be CopyInsertable
ist.