Вопросы с тегом «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
Правильно ли Clang отклонять код, в котором вложенный класс шаблона класса определяется только через специализации?
Дан следующий шаблон класса: 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 { } но Кланг (9.0.0) …

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.