Nur kopierbarer Typ, der in MSVC STD :: Vektor -Implementierung nicht akzeptiert wird

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Nur kopierbarer Typ, der in MSVC STD :: Vektor -Implementierung nicht akzeptiert wird

by Anonymous » 23 Apr 2025, 09:54

im folgenden Code: < /p>

Code: Select all

struct copy_only
{
copy_only() = default;
copy_only(const copy_only&)            = default;
copy_only& operator=(const copy_only&) = default;
copy_only(copy_only&&)                 = delete;
copy_only& operator=(copy_only&&)      = delete;
~copy_only()                           = default;
};

std::vector v;
copy_only c{};
v.push_back(c);
< /code>
Auf MSVC erhalten wir den Fehler: < /p>

Fehler C2280: 'Copy_Only :: Copy_Only (Copy_only &&)': Versuch, auf eine gelöschte Funktion zu verweisen. push_back (const &) 
Aufrufe emplaPS_back Implementierung:

HINWEIS: Beim Kompilieren von Klassenvorlagen -Mitgliedsfunktionen 'void std :: vector : '_Ty & std :: vector :: _ emplace_one_at_back (const _ty &)' kompiliert < /p>
< /blockquote>
Dies kompiliert mit GCC und Clang. Ist dies nur ein massiver MSVC -Compiler -Fehler im einfachsten Vektorbeispiel? Oder gibt es eine Standard -Sache, die diese Verwendung verhindern würde, die GCC und Clang nur überlegen?
Live -Beispiel.

Top