Pertanyaan yang diberi tag «c++»

C ++ adalah bahasa pemrograman untuk tujuan umum. Awalnya dirancang sebagai ekstensi ke C dan memiliki sintaksis yang sama, tetapi sekarang bahasa yang sama sekali berbeda. Gunakan tag ini untuk pertanyaan tentang kode yang akan dikompilasi dengan kompiler C ++. Gunakan tag khusus versi untuk pertanyaan yang berkaitan dengan revisi standar spesifik [C ++ 11], [C ++ 14], [C ++ 17] atau [C ++ 20], dll.

4
Melanggar perubahan dalam C ++ 20 atau regresi dalam dentang-trunk / gcc-trunk saat membebani perbandingan kesetaraan dengan nilai pengembalian non-Boolean?
Kode berikut mengkompilasi baik-baik saja dengan dentang-trunk dalam mode c ++ 17 tetapi istirahat dalam mode c ++ 2a (mendatang c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; int …





3
Mengembalikan void pointer unik dari suatu fungsi
Untuk mendapatkan void *dari fungsi di CI akan melakukan sesuatu seperti ini (contoh sangat mendasar): void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } Bagaimana cara mencapai hasil yang sama saat menggunakan std::unique_ptr<>?
11 c++  c  unique-ptr 



1
Mengapa static_cast diperlukan dalam implementasi gcc dari is_nothrow_constructible?
Diambil dari implementasi GCC type_traitsmengapa static_castdiperlukan di sini? 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>()))> {};

3
Bagaimana cara mengetahui fungsi yang dihasilkan oleh kompiler?
Saya tahu tentang fungsi yang dihasilkan kompiler, aturan tiga dan aturan lima. Dalam skenario dunia nyata, mungkin tidak sepele untuk mencari tahu persis mana fungsi yang dihasilkan kompiler (konstruktor, operator penugasan, destruktor) yang sebenarnya dibuat oleh kompiler. Apakah ada cara untuk membuat daftar fungsi yang dihasilkan kompiler untuk kelas tertentu? …
11 c++  c++11 

1
Sortir tanpa pengecualian () - mengapa ia dikompilasi ketika digunakan pada std :: vector dan bukan pada std :: array, dan kompiler mana yang benar?
Saat memanggil std::sort()pada 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)); } Baik gcc dan dentang mengembalikan kesalahan pada jenis di std::array- dentang kata error: penggunaan 'sort' pengidentifikasi yang tidak dideklarasikan; maksud Anda …
11 c++  c++17 


2
Apakah T harus merupakan tipe yang lengkap untuk digunakan dalam `std :: declval <T>`?
Pertimbangkan contoh ini (datang dari sini ): #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; } Ini mengkompilasi …

1
Bisakah variabel inline diubah setelah inisialisasi dalam C ++ 17?
Skenario saya adalah sebagai berikut (ini bekerja dalam dentang tetapi tidak dalam gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Masalahnya adalah bahwa variabel inline menunjukkan 0 di tempat-tempat di mana saya harapkan 28 karena sudah dimodifikasi …
11 c++  visual-c++  dll  clang  c++17 


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.