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
Perbandingan makro jika-direktif
Mengapa #ifkondisi dalam kode berikut terpenuhi: #include <iostream> #define VALUE foo int main() { #if VALUE == bar std::cout << "WORKS!" << std::endl; #endif // VALUE }

4
Wadah STL dengan jenis tertentu sebagai argumen umum
Apakah ada cara saya bisa membuat fungsi yang mengambil wadah dengan tipe tertentu (katakanlah std::string) sebagai parameter void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } dan menyebutnya untuk setiap jenis wadah stl sebagai input? seperti diatas? std::set<std::string> strset; std::vector<std::string> strvec; std::list<std::string> strlist; …


2
Apakah std :: operator unordered_map [] melakukan inisialisasi nol untuk kunci yang tidak ada?
Menurut cppreference.com, std::map::operator[]untuk nilai yang tidak ada tidak melakukan inisialisasi nol. Namun, situs yang sama tidak menyebutkan inisialisasi nol untuk std::unordered_map::operator[], kecuali ia memang memiliki contoh yang bergantung pada ini. Tentu saja ini hanya situs referensi, bukan standar. Jadi, apakah kode di bawah ini ok atau tidak? #include <unordered_map> int …

2
Inisialisasi yang ditunjuk dalam C ++ 20
Saya punya pertanyaan tentang salah satu fitur c ++ 20, inisialisasi yang ditunjuk (info lebih lanjut tentang fitur ini di sini ) #include <iostream> constexpr unsigned DEFAULT_SALARY {10000}; struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : Person { unsigned salary{DEFAULT_SALARY}; }; int main() { std::cout …


3
apa usecase untuk eksplisit (bool)
C ++ 20 diperkenalkan secara eksplisit (bool) yang dipilih secara kondisional pada waktu kompilasi apakah konstruktor dibuat eksplisit atau tidak. Di bawah ini adalah contoh yang saya temukan di sini . struct foo { // Specify non-integral types (strings, floats, etc.) require explicit construction. template <typename T> explicit(!std::is_integral_v<T>) foo(T) {} …
24 c++  c++20  explicit 

2
makna inline dalam antarmuka modul
Pertimbangkan file tajuk: class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; atau, sebagai alternatif: class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; }; inline …

1
Mengapa `decltype (static_cast <T> (...))` tidak selalu `T`?
Untuk kode berikut, semua kecuali pernyataan terakhir berlalu: template&lt;typename T&gt; constexpr void assert_static_cast_identity() { using T_cast = decltype(static_cast&lt;T&gt;(std::declval&lt;T&gt;())); static_assert(std::is_same_v&lt;T_cast, T&gt;); } int main() { assert_static_cast_identity&lt;int&gt;(); assert_static_cast_identity&lt;int&amp;&gt;(); assert_static_cast_identity&lt;int&amp;&amp;&gt;(); // assert_static_cast_identity&lt;int(int)&gt;(); // illegal cast assert_static_cast_identity&lt;int (&amp;)(int)&gt;(); assert_static_cast_identity&lt;int (&amp;&amp;)(int)&gt;(); // static assert fails } Mengapa pernyataan terakhir ini gagal, dan static_cast&lt;T&gt;tidak selalu mengembalikan …
24 c++  static-cast 

3
C ++ 20 Konsep: Spesialisasi templat mana yang dipilih ketika argumen templat memenuhi syarat untuk beberapa konsep?
Diberikan: #include &lt;concepts&gt; #include &lt;iostream&gt; template&lt;class T&gt; struct wrapper; template&lt;std::signed_integral T&gt; struct wrapper&lt;T&gt; { wrapper() = default; void print() { std::cout &lt;&lt; "signed_integral" &lt;&lt; std::endl; } }; template&lt;std::integral T&gt; struct wrapper&lt;T&gt; { wrapper() = default; void print() { std::cout &lt;&lt; "integral" &lt;&lt; std::endl; } }; int main() { wrapper&lt;int&gt; w; …

2
Mengapa fungsi templat ini tidak berlaku seperti yang diharapkan?
Saya membaca tentang fungsi templat dan menjadi bingung oleh masalah ini: #include &lt;iostream&gt; void f(int) { std::cout &lt;&lt; "f(int)\n"; } template&lt;typename T&gt; void g(T val) { std::cout &lt;&lt; typeid(val).name() &lt;&lt; " "; f(val); } void f(double) { std::cout &lt;&lt; "f(double)\n"; } template void g&lt;double&gt;(double); int main() { f(1.0); // f(double) …



1
'otomatis' sebagai placeholder argumen templat untuk parameter fungsi
C ++ 20 memungkinkan penggunaan autountuk tipe parameter fungsi. Apakah itu juga memungkinkan penggunaan autosebagai placeholder argumen templat (tidak serupa, tetapi dalam semangat C ++ 17 templat &lt;auto&gt; dengan cara) untuk tipe parameter fungsi? Jadi kode berikut, pra C ++ 20: template&lt;typename First, typename Second&gt; void printPair(const std::pair&lt;First, Second&gt;&amp; p) …
22 c++  templates  auto  c++20 

1
Penggunaan variabel dalam initializer sendiri
[basic.scope.pdecl] / 1 dari draft standar C ++ 20 memiliki contoh (non-normatif) berikut dalam catatan (kutipan parsial dari sebelum permintaan tarik gabungan 3580 , lihat jawaban untuk pertanyaan ini): unsigned char x = x; [...] x diinisialisasi dengan nilainya sendiri (tidak ditentukan). Apakah ini sebenarnya memiliki perilaku yang didefinisikan dengan …

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.