string s; bool b[] = {s=="", s==s.c_str(), s.c_str()==""}; set b[] = {true, true, false}; mengapa b[2]salah? Jika A==Bdan A==C, bukankah itu berarti
string s; bool b[] = {s=="", s==s.c_str(), s.c_str()==""}; set b[] = {true, true, false}; mengapa b[2]salah? Jika A==Bdan A==C, bukankah itu berarti
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...
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? ( [&]() ->...
Apakah yang berikut (contoh yang dibuat-buat) baik-baik saja atau apakah itu perilaku tidak terdefinisi: // undefined behavior? const auto& c = SomeClass{}; // use c in code later const auto& v =
Berikut ini tidak mengkompilasi: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Cobalah di godbolt Kesalahan kompiler adalah: error: assignment of read-only reference...
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 :
int a = 5; const int b = a, c = 4; int e[a]; int d[b]; int f[c]; Definisi f[c]valid. Variabelnya bjuga konstan int, tetapi kompiler memberi saya kesalahan "ekspresi harus memiliki nilai konstan" untuk baris int d[b]. Apa perbedaan antara bdan
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...
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...
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...
Ketika saya memiliki loop dan di dalam loop ini membuat variabel stack baru (tidak mengalokasikannya di heap dan variabel memegangnya dinyatakan di dalam tubuh loop), adalah destruktor objek ini dijamin akan dipanggil sebelum iterasi berikutnya dimulai, atau mungkin loop terbuka oleh kompiler...
Pertimbangkan contoh ini (datang dari sini ): #include <type_traits> #include <iostream> template <typename U> struct A { }; struct B { template <typename F = int> A<F> f() { return A<F>{}; } using default_return_type =
Baru-baru ini, saya memiliki yang berikut ini struct data { std::vector<int> V; }; data get_vector(int n) { std::vector<int> V(n,0); return {V}; } Masalah dengan kode ini adalah ketika struct dibuat salinan terjadi dan solusinya adalah menulis kembali {std :: move (V)} Apakah...
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...
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...
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...
Apakah kode berikut ini sah? template <int N> class foo { public: constexpr foo() { for (int i = 0; i < N; ++i) { v_[i] = i; } } private: int v_[N]; }; constexpr foo<5> bar; Dentang menerimanya, tetapi GCC dan MSVC menolaknya. Kesalahan GCC adalah: main.cpp:15:18: error:...
Batas waktu per tes: 5 detik Batas memori per tes: 512 megabyte Anda diberi untaian spanjang n( n≤ 5000). Anda dapat memilih awalan yang tepat dari string ini yang juga sufiksnya dan menghapus awalan yang dipilih atau sufiks yang sesuai. Kemudian Anda dapat menerapkan operasi analog ke...
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
Pertanyaan berikut terkait, namun jawabannya sudah lama, dan komentar dari pengguna Marc Glisse menyarankan ada pendekatan baru sejak C ++ 17 untuk masalah ini yang mungkin tidak cukup dibahas. Saya mencoba menyelaraskan memori yang berfungsi dengan baik untuk SIMD, sementara masih memiliki akses...