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.

2
Sintaks valid memanggil pseudo-destructor untuk konstanta mengambang
Pertimbangkan program demonstratif berikut. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Program ini disusun oleh Microsoft Visual Studio Community 2019. Tapi clangdan gcckeluarkan kesalahan seperti ini prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ Jika menulis ekspresi seperti itu ( 0.f …

3
Cara menghindari konversi implisit dari int (0) ke penunjuk dalam vektor
Ada situasi di mana saya ingin mengumpulkan semua nama node jalur ke kunci di JSON. Pertimbangkan kondisi indeks array "0", "1" juga diperbolehkan, tetapi mudah untuk melupakan tanda kutip, yang akan menyebabkan crash ketika melakukan dereference. Jadi saya ingin menolak ini. Contoh: #include <vector> #include <iostream> int func(const std::vector<const char*>& …

2
Bangun pengecualian standar dengan argumen penunjuk nol dan kondisi akhir yang tidak mungkin
Pertimbangkan program berikut: #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } GCC dan Dentang dengan libstdc ++ panggilan std::terminatedan batalkan program dengan pesan terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Dibatasi dengan libc ++ …

2
Bisakah saya mengembalikan pipa sementara ke operasi jangkauan?
Misalkan saya memiliki generate_my_rangekelas yang memodelkan a range(khususnya, adalah regular). Lalu apakah kode berikut ini benar: auto generate_my_range(int some_param) { auto my_transform_op = [](const auto& x){ return do_sth(x); }; return my_custom_rng_gen(some_param) | ranges::views::transform(my_transform_op); } auto cells = generate_my_range(10) | ranges::to<std::vector>; Apakah my_custom_rng_gen(some_param)diambil dengan nilai oleh operator pipa (pertama), atau apakah …
9 c++  range-v3 

1
Bagaimana cara mendapatkan jumlah elemen di std :: array <T, N> tanpa harus membuat turunannya?
Ada std::array&lt;T, N&gt;::size(), tapi ini non-statis, jadi itu membutuhkan contoh std::array. Apakah ada cara untuk mendapatkan nilai yang dikembalikan (yang merupakan Ndari std::array&lt;T, N&gt;) tanpa harus membuat turunan dari array? Untuk array normal, saya bisa menggunakan sizeof, tetapi saya melihat tidak ada jaminan itu sizeof(std::array&lt;T, N&gt;) == N * sizeof(T)benar.
9 c++  arrays  c++11  sizeof 

2
Apa ruang nama yang ada dan aturannya?
Catatan: pertanyaan ini tentang name space, bukan namespace. Standar C ++ memiliki beberapa referensi name space, tetapi saya tidak melihat definisi ini. Standar mengatakan bahwa label dan makro berada dalam ruang nama yang berbeda. Semua referensi lain name spaceada di bagian kompatibilitas C / C ++, seperti ini ( konsep …
9 c++  namespaces 

1
Apakah UB untuk melanjutkan fungsi anggota coroutine dari objek yang masa hidupnya telah berakhir?
Pertanyaan ini berasal dari komentar ini: Penjelasan seumur hidup Lambda untuk C ++ 20 coroutine tentang contoh ini: auto foo() -&gt; folly::coro::Task&lt;int&gt; { auto task = []() -&gt; folly::coro::Task&lt;int&gt; { co_return 1; }(); return task; } Jadi pertanyaannya adalah apakah mengeksekusi coroutine yang dikembalikan oleh fooakan menghasilkan UB. "Memanggil" fungsi …

1
Penciptaan Obyek Tersirat yang Tidak Ditentukan
Karena P0593 penciptaan objek secara implisit untuk manipulasi objek tingkat rendah telah diterima, objek sekarang dapat dibuat secara implisit dalam C ++ 20. Khususnya kata-kata yang diperkenalkan oleh proposal memungkinkan operasi tertentu (seperti std::malloc) untuk secara otomatis membuat dan memulai masa objek dari tipe tertentu, yang disebut tipe implisit-seumur hidup …





2
Apa yang dijamin dengan C ++ std :: atomic di tingkat programmer?
Saya telah mendengarkan dan membaca beberapa artikel, pembicaraan, dan pertanyaan tentang stackoverflow std::atomic, dan saya ingin memastikan bahwa saya telah memahaminya dengan baik. Karena saya masih agak bingung dengan garis cache menulis visibilitas karena kemungkinan keterlambatan protokol koherensi cache MESI (atau diturunkan), menyimpan buffer, antrian tidak valid, dan sebagainya. Saya …


1
Konversi untuk membatalkan ** pada kompiler yang berbeda
Saya telah menjalankan kode berikut melalui berbagai kompiler: int main() { float **a; void **b; b = a; } Dari apa yang saya sudah mampu mengumpulkan, void **adalah tidak pointer generik yang berarti bahwa setiap konversi dari pointer lain tidak harus mengkompilasi atau setidaknya melempar peringatan. Namun, inilah hasil saya …
9 c++  c  cuda 

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.