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.

1
std :: function const correctness
Misalkan saya memiliki tipe callable seperti: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Catatan yang mutable_callablememiliki non-const operator()yang memodifikasi variabel anggota ..... Sekarang anggaplah saya membuat std::functionkeluar dari tipeku: std::function<int()> foo = mutable_callable{}; Sekarang saya bisa melakukan ini: void invoke(std::function<int()> …

1
Bisakah span menjadi constexpr?
Semua konstruktor std :: span dideklarasikan dengan constexpr, namun sepertinya saya tidak bisa membuat mereka bekerja dalam konteks constexpr. Membatalkan komentar salah satu dari constexpr di bawah ini akan menghasilkan kesalahan kompilasi. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array<int, …
11 c++  constexpr  c++20 



5
Tugas C ++ terner dari lambda
Tahu mengapa cuplikan berikut tidak dikompilasi? Ia mengeluh dengan kesalahan "error: operan to?: Have types types" auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;



2
Panggilan ke lambda tidak jelas meskipun secara eksplisit menyatakan jenis pengembalian
Fungsi kelebihan beban harus mengambil kedua functors, mengingat jenis lambda adalah decidable (castable to a std::function (tolong perbaiki saya jika saya salah). Pertanyaannya adalah: Mengapa ada kesalahan kompilasi di bawah, meskipun jenis lambda secara eksplisit didefinisikan? ( [&]() -> Type {}) Harap dicatat, bahwa untuk solusi saya saat ini, saya …

1
Bisakah templat variabel diteruskan sebagai argumen templat templat?
Contoh tidak masuk akal berikut ini tidak mengkompilasi, tetapi apakah ada cara lain untuk meneruskan templat variabel sebagai argumen templat templat? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Coba …


1
Konfigurasikan CMake di windows untuk menggunakan dentang dari baris perintah untuk mendapatkan dukungan OpenMP modern
Saya punya proyek uji kecil yang menggunakan OpenMP untuk paralelisasi. Target saya adalah untuk mengkompilasinya sehingga menghasilkan .dlldan .libuntuk perpustakaan (karena tautan proyek saya yang sebenarnya ke perpustakaan eksternal yang didistribusikan menggunakan jenis ini), dengan dukungan untuk OpenMP 4.5 atau yang lebih baru dan melakukannya dari baris perintah sehingga dapat …

2
reset lemah_ptr mempengaruhi shared_ptr?
Saya tidak terlalu terbiasa menggunakan weak_ptrdan saya menghadapi situasi yang cukup membingungkan. Saya menggunakan Intel XE 2019 Composer pembaruan 5 ( paket 2019.5.281 ) dalam kombinasi dengan Visual Studio 2019 ver. 16.2.5 . Saya kompilasi dalam 64-bit. Saya menggunakan standar C ++ 17 . Berikut adalah kode untuk solusi spike …

3
Bisakah saya menggunakan std :: transform di tempat dengan kebijakan eksekusi paralel?
Jika saya tidak salah, saya dapat melakukan std::transformperform di tempat dengan menggunakan rentang yang sama sebagai input dan output iterator. Anggaplah saya memiliki beberapa std::vectorobjek vec, maka saya akan menulis std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) menggunakan operasi unary yang cocok unary_op. Menggunakan standar C ++ 17, saya ingin menjalankan transformasi secara paralel dengan menempelkannya …

7
Menghapus () elemen dalam vektor tidak berfungsi
Saya punya vektor. Saya perlu menghapus 3 elemen terakhir di dalamnya. Dijelaskan logika ini. Program macet. Apa yang bisa menjadi kesalahannya? vector<float>::iterator d = X.end(); for (size_t i = 1; i < 3; i++) { if (i == 1) X.erase(d); else X.erase(d - i); }
10 c++  vector 

2
Pengurangan tipe argumen template templat C ++
Saya memiliki kode yang menemukan dan mencetak kecocokan suatu pola ketika melewati wadah string. Pencetakan dilakukan dalam fungsi foo yang templated Kode #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for …

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.