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

C ++ là ngôn ngữ lập trình có mục đích chung. Ban đầu nó được thiết kế như một phần mở rộng cho C và có cú pháp tương tự, nhưng giờ đây nó là một ngôn ngữ hoàn toàn khác. Sử dụng thẻ này cho các câu hỏi về mã (sẽ được) được biên dịch bằng trình biên dịch C ++. Sử dụng thẻ dành riêng cho phiên bản cho các câu hỏi liên quan đến sửa đổi tiêu chuẩn cụ thể [C ++ 11], [C ++ 14], [C ++ 17] hoặc [C ++ 20], v.v.



4
Thay đổi đột phá trong C ++ 20 hoặc hồi quy trong clang-trunk / gcc-trunk khi quá tải so sánh đẳng thức với giá trị trả về không Boolean?
Đoạn mã sau biên dịch tốt với clang-trunk ở chế độ c ++ 17 nhưng bị phá vỡ ở chế độ c ++ 2a (sắp tới c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta …





3
Trả về một con trỏ void duy nhất từ ​​một hàm
Để có được một void *chức năng trong CI sẽ làm một cái gì đó như thế này (ví dụ rất cơ bản): void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } Làm thế nào để tôi đạt được kết quả tương tự khi sử dụng std::unique_ptr<>?
11 c++  c  unique-ptr 




1
Unqualified sort () - tại sao nó biên dịch khi được sử dụng trên std :: vector mà không phải trên std :: mảng, và trình biên dịch nào là đúng?
Khi gọi std::sort()trên std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Cả gcc và clang đều trả về lỗi trên sắp xếp trên std::array- clang nói lỗi: sử dụng định danh không …
11 c++  c++17 

1
Tại sao static_cast cần thiết trong việc triển khai is_nothrow_constructible của gcc?
Lấy từ việc thực hiện GCC type_traitstại sao static_castcần thiết ở đây? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg> struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant<bool, // Why is `static_cast` needed here? noexcept(static_cast<_Tp>(declval<_Arg>()))> {};


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; } …

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.