Als «incomplete-type» getaggte Fragen

6
std :: unique_ptr mit einem unvollständigen Typ wird nicht kompiliert
Ich benutze das Pimpl-Idiom mit std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Ich erhalte jedoch einen Kompilierungsfehler bezüglich der Verwendung eines unvollständigen Typs in Zeile 304 in <memory>: Ungültige Anwendung von ' sizeof' auf einen unvollständigen Typ ' …

1
Ist Clang korrekt, um Code abzulehnen, in dem die verschachtelte Klasse einer Klassenvorlage nur über Spezialisierungen definiert ist?
Gegeben die folgende Klassenvorlage: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; Wir definieren Innerseparat für jede Spezialisierung von Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; und definieren Sie dann die Elementfunktion feinmal für alle Spezialisierungen von Outer: auto Outer<T>::f(Inner) -> void { } …

2
Muss T ein vollständiger Typ sein, um in `std :: declval <T>` verwendet zu werden?
Betrachten Sie dieses Beispiel (von hier ): #include &lt;type_traits&gt; #include &lt;iostream&gt; template &lt;typename U&gt; struct A { }; struct B { template &lt;typename F = int&gt; A&lt;F&gt; f() { return A&lt;F&gt;{}; } using default_return_type = decltype(std::declval&lt;B&gt;().f()); }; int main() { B::default_return_type x{}; std::cout &lt;&lt; std::is_same&lt; B::default_return_type, A&lt;int&gt;&gt;::value; } Es wird …

1
Kann ein Zeiger auf einen unvollständigen Typ unvollständig sein?
Kann int (*)[]ein unvollständiger Typ sein? C 2018 6.2.5 1 sagt: An verschiedenen Stellen innerhalb einer Übersetzungseinheit kann ein Objekttyp unvollständig (ohne ausreichende Informationen zur Bestimmung der Größe von Objekten dieses Typs) oder vollständig (mit ausreichenden Informationen) sein. Wenn also die Größe eines Typs bekannt ist, scheint der Typ vollständig …

1
Kann ein Compiler die Implementierung eines implizit deklarierten virtuellen Destruktors in einer einzelnen separaten Übersetzungseinheit platzieren?
Der folgende Code kompiliert und verknüpft mit Visual Studio(sowohl 2017 als auch 2019 mit /permissive-), kompiliert jedoch nicht mit entweder gccoder clang. foo.h #include &lt;memory&gt; struct Base { virtual ~Base() = default; // (1) }; struct Foo : public Base { Foo(); // (2) struct Bar; std::unique_ptr&lt;Bar&gt; bar_; }; foo.cpp …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.