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.

3
C ++ 20 Konsep: Spesialisasi templat mana yang dipilih ketika argumen templat memenuhi syarat untuk beberapa konsep?
Diberikan: #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> w; …

1
'otomatis' sebagai placeholder argumen templat untuk parameter fungsi
C ++ 20 memungkinkan penggunaan autountuk tipe parameter fungsi. Apakah itu juga memungkinkan penggunaan autosebagai placeholder argumen templat (tidak serupa, tetapi dalam semangat C ++ 17 templat <auto> dengan cara) untuk tipe parameter fungsi? Jadi kode berikut, pra C ++ 20: template<typename First, typename Second> void printPair(const std::pair<First, Second>& p) …
22 c++  templates  auto  c++20 

1
Penggunaan variabel dalam initializer sendiri
[basic.scope.pdecl] / 1 dari draft standar C ++ 20 memiliki contoh (non-normatif) berikut dalam catatan (kutipan parsial dari sebelum permintaan tarik gabungan 3580 , lihat jawaban untuk pertanyaan ini): unsigned char x = x; [...] x diinisialisasi dengan nilainya sendiri (tidak ditentukan). Apakah ini sebenarnya memiliki perilaku yang didefinisikan dengan …



2
Mengapa konsep same_as memeriksa jenis persamaan dua kali?
Melihat kemungkinan implementasi konsep same_as di https://en.cppreference.com/w/cpp/concepts/same_as saya perhatikan ada sesuatu yang aneh sedang terjadi. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; Pertanyaan pertama adalah mengapa sebuah SameHelperkonsep …
19 c++  c++20  concept 

4
Continuous enum C ++ 11
Apakah ada cara untuk memeriksa C ++ 11 jika enum kontinu ? Ini sepenuhnya valid untuk memberikan nilai enum yang bukan. Apakah mungkin ada fitur seperti jenis sifat di C ++ 14, C ++ 17 atau mungkin C ++ 20 untuk memeriksa apakah enum kontinu? Ini untuk digunakan dalam static_assert. …
17 c++  c++11  c++14  c++17  c++20 


1
Mengapa file standar C ++ menangani mencari seperti itu?
C ++ menggunakan streamofftipe untuk mewakili offset dalam aliran (file) dan didefinisikan sebagai berikut di [stream.types]: using streamoff = implementation-defined ; Jenis aliran adalah sinonim untuk salah satu tipe integral dasar yang ditandatangani dari ukuran yang cukup untuk mewakili ukuran file maksimum yang mungkin untuk sistem operasi. 287) 287) Biasanya …



2
Mengapa std :: swap bertanda constexpr sebelum C ++ 20?
Di C ++ 20, std::swapmenjadi constexprfungsi. Saya tahu bahwa perpustakaan standar benar-benar tertinggal di belakang bahasa dalam menandai hal-hal constexpr, tetapi pada 2017, <algorithm>cukup banyak constexpr seperti banyak hal lainnya. Namun - std::swaptidak. Samar-samar saya ingat ada beberapa cacat bahasa aneh yang mencegah penandaan itu, tapi saya lupa detailnya. Adakah …

2
Apakah penyimpanan std :: chrono :: tahun benar-benar setidaknya 17 bit?
Dari cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Menggunakan libc++, tampaknya penyimpanan garis bawah std::chrono::yearsadalah shortyang ditandatangani 16 bit . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Apakah ada kesalahan ketik pada cppreference atau yang …
14 c++  chrono  c++20  libc++ 

1
jika constexpr - mengapa pernyataan dibuang sepenuhnya diperiksa?
Saya bermain-main dengan c ++ 20 consteval di GCC 10 dan menulis kode ini #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t> find_if_impl(Predicate&& pred, Tuple&& t) noexcept { constexpr std::size_t I = std::tuple_size_v<std::decay_t<decltype(t)>> - N; if constexpr (N == 0u) { return std::nullopt; …

3
std :: bit_cast dengan std :: array
Dalam ceramahnya yang baru-baru ini "Tipe punning in C ++ modern" Timur Doumler mengatakan bahwa std::bit_casttidak dapat digunakan untuk menggigit sebuah floatke dalam unsigned char[4]karena array gaya-C tidak dapat dikembalikan dari suatu fungsi. Kita harus menggunakan std::memcpyatau menunggu sampai C ++ 23 (atau lebih baru) ketika sesuatu seperti reinterpret_cast<unsigned char*>(&f)[i]akan …

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.