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

Đối với các câu hỏi về sự phức tạp của thông số kỹ thuật chính thức hoặc có thẩm quyền của ngôn ngữ lập trình và môi trường.




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 …


1
Tại sao trình biên dịch chọn phương thức chung này với tham số loại lớp khi được gọi với loại giao diện không liên quan?
Hãy xem xét hai lớp và giao diện sau đây: public class Class1 {} public class Class2 {} public interface Interface1 {} Tại sao cuộc gọi thứ hai để mandatorygọi phương thức quá tải với Class2, nếu getInterface1và Interface1không có mối quan hệ với Class2? public class Test { public …

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

2
Loại trừ đối số mẫu C ++
Tôi có mã tìm và in ra các mẫu trùng khớp khi đi qua vùng chứa các chuỗi. In được thực hiện trong chức năng foo được templated Mật mã #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &lt;tuple&gt; #include &lt;utility&gt; template&lt;typename Iterator, template&lt;typename&gt; class Container&gt; void …

1
Giá trị char được đặt thành CHAR_MAX có được bảo đảm để bao quanh CHAR_MIN không?
Mã của tôi: #include &lt;stdio.h&gt; #include &lt;limits.h&gt; int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } Đầu ra: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Chúng ta thấy rằng khi chúng ta tăng một charbiến được đặt thành CHAR_MAX, nó sẽ bao quanh …


1
Không mong đợi UnlimitedOperationException khi cố gắng thay đổi mối quan hệ thông qua giá trị mặc định của thuộc tính
Trong mã mẫu dưới đây, tôi nhận được ngoại lệ sau khi thực hiện db.Entry(a).Collection(x =&gt; x.S).IsModified = true: System.InvalidOperationException: 'Không thể theo dõi thể hiện của loại thực thể' B 'vì một phiên bản khác có giá trị khóa' {Id: 0} 'đã được theo dõi. Khi đính kèm các …



2
Xây dựng các ngoại lệ tiêu chuẩn với đối số con trỏ null và các điều kiện hậu kỳ không thể
Hãy xem xét chương trình sau: #include&lt;stdexcept&gt; #include&lt;iostream&gt; int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&amp;) { std::cout &lt;&lt; "Caught!\n"; } } GCC và Clang với libstdc ++ gọi std::terminatevà hủy bỏ chương trình với thông báo terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null …

1
Có phải là UB để tiếp tục một chức năng thành viên coroutine của một đối tượng có thời gian kết thúc?
Câu hỏi này xuất phát từ nhận xét này: Giải thích trọn đời Lambda cho C ++ 20 coroutines liên quan đến ví dụ này: auto foo() -&gt; folly::coro::Task&lt;int&gt; { auto task = []() -&gt; folly::coro::Task&lt;int&gt; { co_return 1; }(); return task; } Vì vậy, câu hỏi là liệu thực …

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.