Запитання з тегом «incomplete-type»

6
std :: unique_ptr з неповним типом не збирається
Я використовую ідіому pimpl з std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Однак я отримую помилку компіляції щодо використання неповного типу в рядку 304 у <memory>: Недійсне застосування " sizeof" до неповного типу " uixx::window::window_impl" Наскільки я знаю, …

1
Чи правильно Кланг відхиляти код, у якому вкладений клас шаблону класу визначається лише за допомогою спеціалізації?
Дано такий шаблон класу: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; ми визначаємо Innerокремо для кожної спеціалізації Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; а потім fодин раз визначити функцію члена для всіх спеціалізацій Outer: auto Outer<T>::f(Inner) -> void { } але Кланг …

2
Чи повинен бути T повного типу, щоб використовувати його в `std :: declval <T>`?
Розглянемо цей приклад ( звідси ): #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
Чи може вказівник на неповний тип бути неповним?
Може int (*)[]бути неповним типом? C 2018 6.2.5 1 каже: У різних точках в одиниці перекладу тип об'єкта може бути неповним (бракує достатньої інформації для визначення розміру об'єктів цього типу) або повним (має достатню інформацію). Таким чином, здається, що якщо розмір типу відомий, тип буде повним. 6.2.6.1 28 вказується, що …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.