Adakah yang bisa memberi tahu saya apakah std :: atomic :: is_lock_free () tidak statis dan juga constexpr? Setelah itu non-statis dan / atau sebagai non-constexpr tidak masuk akal bagi
Adakah yang bisa memberi tahu saya apakah std :: atomic :: is_lock_free () tidak statis dan juga constexpr? Setelah itu non-statis dan / atau sebagai non-constexpr tidak masuk akal bagi
Secara fungsional dan sintaksis, apakah ada perbedaan antara fungsi yang prototipe-nya int foo(void)dan int foo(void *)? Saya tahu perbedaan antara, misalnya, int bar(int)dan int bar(int *)- salah satunya mencari int, dan yang lainnya mencari pointer int. Apakah voidberperilaku dengan cara yang...
push_back , begin , end digambarkan aman bersamaan di https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back Namun kode di bawah ini menyatakan. Mungkin karena elemen ditambahkan tetapi belum diinisialisasi. struct MyData { explicit...
Ungkapan "sangat terjadi sebelum" digunakan beberapa kali dalam standar konsep C ++. Misalnya: Pengakhiran [basic.start.term] / 5 Jika penyelesaian inisialisasi objek dengan durasi penyimpanan statis sangat terjadi sebelum panggilan ke std :: atexit (lihat, [support.start.term]), panggilan ke...
Tugas: Terjemahkan ekspresi bahasa alami berikut ke ekspresi C ++. Asumsikan bahwa semua variabel adalah angka non-negatif atau boolean (bernilai benar atau salah). Bahasa alami: Baik a dan b keduanya salah atau c benar, tetapi tidak keduanya. Solusi saya: (a==0 &&...
Saya tahu std::arraybenar-benar dialokasikan dalam tumpukan, tetapi pertanyaan ini dimotivasi oleh masalah keamanan yang memerlukan dua hal: Data di std::arrayakan zerod atau acak pada kehancuran Data di std::arrayakan dikunci , sehingga tidak pernah masuk ke disk baik pada crash atau pada memori...
Saya berdebat dengan seorang kolega, tentang lock_guard, dan dia mengusulkan bahwa lock_guard mungkin lebih lambat daripada mutex :: lock () / mutex :: unlock () karena biaya instantiate dan unistantiate class lock_guard. Lalu saya membuat tes sederhana ini dan, anehnya, versi dengan lock_guard...
Katakanlah saya memiliki kelas yang terlihat seperti ini (ini hanya sebuah contoh): class A { double *ptr; public: A() : ptr( new double[100] ) {} A( const A &other ) { other.ptr[7] = 15; } void doNotChangeMyData() const { ptr[43] = 14; } void changeMyData() { ptr[43] = 14; } ~A()...
Dalam C ++ 20 u8string literal didasarkan pada char8_tjenisnya. Mereka dengan sengaja tidak mengonversi ke char const*lagi: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Tentu saja, tujuan akhir ketika bermigrasi ke C ++ 20 adalah sepenuhnya mengikuti perilaku baru...
Saya mencoba memahami cuplikan kode berikut Cuplikan # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Baik gcc9 atau dentang melemparkan kesalahan di sini. Q. Mengapa kode ini dikompilasi? Bukankah kita instantiasi A<B>ketika...
Pertimbangkan 1) kelas khusus dengan cetakan memori yang berpotensi besar, dan 2) fungsi tingkat atas yang melakukan beberapa pra-pemrosesan, kemudian buat dan kembalikan objek baru dari kelas khusus kami. Untuk menghindari penyalinan yang tidak perlu dengan nilai, fungsi mengalokasikan objek dan...
Saya tahu bahwa pointer aritmatika tidak diizinkan untuk null pointer. Tetapi bayangkan saya memiliki sesuatu seperti ini: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int...
Apakah spesifikasi C ++ menentukan urutan operator newdan konstruktor Adalam new C(A()). G ++ membiarkan urutannya menjadi A()-> new-> C(), tetapi clang ++ biarkan saja new-> A()-> C(). Apakah perbedaan disebabkan oleh perilaku yang tidak ditentukan? g ++: 7.4.0 dentang ++:...
Misalkan saya memiliki kode berikut: #include <iostream> #include <string> #include <iomanip> using namespace std; // or std:: int main() { string s1{ "Apple" }; cout << boolalpha; cout << (s1 == "Apple") << endl; //true } Pertanyaan saya adalah: Bagaimana...
Pertimbangkan kode berikut: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } Ini adalah bagaimana Anda harus menginisialisasi B: B<int, 3> b = { {}, {1, 2, 3} }; Saya ingin menghindari {} kosong yang tidak perlu untuk kelas dasar....
class FooView final : public Something { ... void refresh() { this->~FooView(); new (this) FooView(); } } Saya belum pernah melihat idiom ini, dan sepertinya itu bisa sangat halus dan berantakan, tetapi saya tidak dapat benar-benar memikirkan masalah dengan itu (selama FooViewfinal)....
Saya tahu ini adalah subjek yang cukup umum, tetapi sebanyak UB tipikal mudah ditemukan, saya tidak menemukan varian ini sejauh ini. Jadi, saya mencoba memperkenalkan objek Pixel secara resmi sambil menghindari salinan data yang sebenarnya. Apakah ini valid? struct Pixel { uint8_t red; uint8_t...
Saya menemukan masalah ini ketika mencoba untuk mengkhususkan tuple_size/ tuple_elementuntuk kelas khusus di C ++ 17 untuk penjilidan terstruktur. Kode di bawah ini dikompilasi dalam GCC, tetapi tidak dalam dentang (kedua versi trunk, lihat tautan di bawah). #include
#include <iostream> using namespace std; template <class X, class Y> Y big(X a, Y b) { if (a > b) return (a); else return (b); } int main() { cout << big(32.8, 9); } Di sini saya menggunakan template di CPP, jadi ketika saya memanggil fungsi bigmem-bypass argumen...
Saya berurusan dengan kode yang telah ditulis bukan oleh saya. Saya memiliki pernyataan ini: // p is type of std::unique_ptr<uint8_t[]> if (p < 0) { /* throw an exception */ } Jadi apa p < 0artinya dalam konteks ini? Pada halaman dokumentasi , saya percaya kasus saya adalah 16) y...