Câu hỏi được gắn thẻ «incomplete-type»

6
std :: unique_ptr với kiểu không hoàn chỉnh sẽ không biên dịch
Tôi đang sử dụng thành ngữ pimpl với std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Tuy nhiên, tôi gặp lỗi biên dịch liên quan đến việc sử dụng loại không hoàn chỉnh, trên dòng 304 trong <memory>: Áp …

1
Clang có đúng để từ chối mã trong đó lớp lồng của mẫu lớp chỉ được xác định thông qua các chuyên ngành không?
Cho mẫu lớp sau: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; chúng tôi xác định Innerriêng cho từng chuyên ngành của Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; và sau đó xác định hàm thành viên fmột lần cho tất cả các chuyên …

2
T có phải là một loại hoàn chỉnh được sử dụng trong `std :: decval <T>` không?
Xem xét ví dụ này (đến từ đây ): #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; } …


1
Trình biên dịch có thể đặt việc thực hiện một hàm hủy ảo được khai báo ngầm trong một đơn vị dịch riêng biệt không?
Đoạn mã sau sẽ biên dịch và liên kết với Visual Studio(cả 2017 và 2019 với /permissive-), nhưng không biên dịch với một trong hai gcchoặc clang. foo.h #include &lt;memory&gt; struct Base { virtual ~Base() = default; // (1) }; struct Foo : public Base { Foo(); // (2) struct …
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.