Pertanyaan yang diberi tag «c++20»

C ++ 20 adalah target untuk versi C ++ setelah C ++ 17. Tag ini harus digunakan (bersama dengan tag C ++) untuk pertanyaan tentang fitur C ++ di jalur untuk C ++ 20.

1
Mengapa tipe ekspresi berubah dalam C ++ antar versi?
Saya mencoba untuk memahami jenis ekspresi C ++ dan semakin banyak saya membaca, semakin bingung saya, karena saya menemukan konsep C ++ sangat sulit untuk dicerna dan oleh karena itu lebih suka sumber daya lain tetapi mereka saling bertentangan atau tidak memperhitungkan bahwa kata-kata dan definisi antara versi C ++ …
13 c++  c++11  c++14  c++17  c++20 

1
Apakah `equality_comparable_with` perlu memerlukan` common_reference`?
The Konsepequality_­comparable_with<T, U> ini dimaksudkan untuk menyatakan bahwa objek dari jenis Tdan Udapat dibandingkan sama satu sama lain, dan jika mereka, maka ini memiliki arti yang diharapkan. Tidak apa-apa. Namun, konsep ini juga perlu common_reference_t<T&, U&>ada. Dorongan utama untuk common_referencedan fungsi petugasnya tampaknya adalah untuk mengaktifkan iterator proxy , untuk …

1
Definisi C ++ 20 di luar kelas dalam kelas templat
Hingga standar C ++ 20 dari C ++, ketika kami ingin mendefinisikan operator di luar kelas yang menggunakan beberapa anggota pribadi dari kelas templat, kami akan menggunakan konstruksi yang mirip dengan ini: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> …
12 c++  templates  c++20 

1
Apakah lambda yang dapat ditangkap dijamin kosong oleh standar?
Saya sedang mencari cara untuk mengidentifikasi lambda kosong (tidak bisa ditangkap) dari lambda lain dalam fungsi templat. Saat ini saya menggunakan C ++ 17 tapi saya juga penasaran untuk C ++ 20 jawaban juga. Kode saya terlihat seperti ini: template<typename T> auto func(T lambda) { // The aguments of the …
12 c++  lambda  c++17  c++20 



2
Melewati konsep ke fungsi
Karena konsep didefinisikan sebagai predikat waktu kompilasi, apakah mungkin untuk menggunakan kembali predikat ini untuk algoritme waktu kompilasi? Misalnya, apakah mungkin untuk memeriksa apakah semua tipe dalam tuple sesuai dengan konsep? Sejauh yang saya lihat, tidak mungkin untuk meneruskan konsep ke fungsi dengan cara apa pun, jenis apa yang membuat …


4
Melanggar perubahan dalam C ++ 20 atau regresi dalam dentang-trunk / gcc-trunk saat membebani perbandingan kesetaraan dengan nilai pengembalian non-Boolean?
Kode berikut mengkompilasi baik-baik saja dengan dentang-trunk dalam mode c ++ 17 tetapi istirahat dalam mode c ++ 2a (mendatang c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; 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 


1
Mengapa std :: span tidak memiliki operator pembanding?
Bukankah itu std::spandirancang sebagai referensi ringan untuk sub-daerah arraystd::vector / std::array/ dan sama-sama? Bukankah seharusnya juga memuat operator perbandingan di API-nya, agar konsisten dengan mereka? Apa alasan di balik pengecualian ini? Catatan: oleh operator perbandingan, maksud saya baik set lengkap ( <, <=, ...) atau pesawat ruang angkasa<=>
10 c++  std  c++20  std-span 

1
Apakah kami dapat membuat wadah dengan tampilan di C ++ 20?
Kisaran datang ke C ++ dengan versi standar C ++ 20. Pertanyaan saya: Apakah kami dapat membuat wadah perpustakaan standar (yang ada) dengan jangkauan apa pun? Dan yang lebih penting, dengan berbagai tampilan? Misalnya, apakah ini: #include <vector> #include <iostream> #include <ranges> int main() { auto sq = [](int x) …
10 c++  c++20  range-v3 

1
Apakah diperlukan ekspresi yang diizinkan untuk "menangkap" variabel lingkup yang melampirkan?
Dalam contoh berikut, argumen fungsi digunakan untuk menguji dengan ekspresi yang membutuhkan apakah ekspresi yang menggunakannya terbentuk dengan baik. Ekspresi yang membutuhkan tidak membutuhkan argumen; menggunakan variabel dalam lingkup fungsi secara langsung: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr (requires { v.resize(n); …

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() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } Jadi pertanyaannya adalah apakah mengeksekusi coroutine yang dikembalikan oleh fooakan menghasilkan UB. "Memanggil" fungsi …

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.