«c++20» etiketlenmiş sorular

C ++ 20, C ++ 17'den sonra C ++ sürümü için hedeftir. Bu etiket C ++ 20 için yolda C ++ özellikleri hakkında sorular için (C ++ etiketi ile birlikte) kullanılmalıdır.

2
modül arayüzlerinde satır içi anlam
Başlık dosyasını düşünün: class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; Veya alternatif olarak: class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; }; inline …

3
C ++ 20 Kavramlar: Şablon bağımsız değişkeni birden çok kavram için uygun olduğunda hangi şablon uzmanlığı seçilir?
Verilen: #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
Bir işlev parametresi için şablon bağımsız değişken yer tutucu olarak 'otomatik'
C ++ 20 autoişlev parametre türü için kullanılmasına izin verir . Aynı zamanda kullanılmasına izin mu autobir şablon bağımsız değişken tutucu olarak (benzer, ama ruhunda C ++ 17 şablon <oto> bir şekilde) işlev parametre tipleri için? Yani aşağıdaki kod, C ++ 20 öncesi: template<typename First, typename Second> void printPair(const std::pair<First, …
22 c++  templates  auto  c++20 


2
POD türü olmak önemsiz, standart düzen türüne tam olarak eşdeğer mi?
C ++ 20'de, POD kavramı, varsayılan ve önemsiz olmanın anlamsız bir kompozit özelliği olduğu için kullanımdan kaldırılmıştır. Bununla birlikte, C ++ 20 taslağındaki POD'un tanımı tam olarak "hem önemsiz hem de standart düzen" değildir; aslında: POD sınıfı, hem önemsiz bir sınıf hem de standart mizanpaj sınıfı olan ve POD sınıfı …


2
Same_as konsepti tip eşitliğini neden iki kez kontrol ediyor?
Https://en.cppreference.com/w/cpp/concepts/same_as adresinde same_as konseptinin olası uygulanışına baktığımda garip bir şey olduğunu fark ettim. 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>; İlk soru, bir SameHelperkavramın neden açıklandığıdır? İkinci neden …
19 c++  c++20  concept 

4
Sürekli numaralandırma C ++ 11
Bir enum sürekli olup olmadığını C ++ 11 denetlemek için bir yolu var mı ? Olmayan bir enum değerleri vermek tamamen geçerlidir. Enum sürekli olup olmadığını kontrol etmek için C ++ 14, C ++ 17 veya belki C ++ 20'de bir tür özelliği gibi bir özellik var mı? Bu, static_assert …
17 c++  c++11  c++14  c++17  c++20 

1
Neden C ++ standardı bu şekilde arama yapıyor?
C ++, streamoffbir (dosya) akışı içindeki bir ofseti temsil etmek için türü kullanır ve [stream.types] içinde aşağıdaki gibi tanımlanır: using streamoff = implementation-defined ; Streamoff türü, işletim sistemi için mümkün olan maksimum dosya boyutunu temsil etmek için yeterli büyüklükte imzalı temel integral türlerinden birinin eş anlamlısıdır. 287) 287) Genellikle uzun …


2
[[no_unique_address]] ve aynı türde iki üye değeri
Ben etrafında oynuyorum [[no_unique_address]]içinde c++20. Cppreference örneğinde boş bir tür Emptyve tür varZ struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; Görünüşe göre, boyutu Zen azından 2türleri e1ve e2aynı olduğu için olmalıdır. Ancak, gerçekten Zboyutu ile istiyorum 1. Bu bana neyi Paketleme …

1
Sıkılaştırma işlevi neden tanımlanmamış davranışa izin veriyor?
C ++ 'da sabit ifadelerin çok düzgün bir özelliği vardır: değerlendirmelerinin tanımlanmamış davranışı olamaz ( 7.7.4.7 ): E ifadesi, soyut makinenin kurallarına ([intro.execution]) uygun olarak e değerlendirmesi aşağıdakilerden birini değerlendirmediği sürece, temel sabit bir ifadedir: ... bu belgenin [intro] ila [cpp] 'de belirtildiği gibi tanımlanmamış davranışa sahip bir işlem [Not: …

2
Neden std :: swap, C ++ 20'den önce constexpr olarak işaretlenmiyor?
C ++ 20'de std::swapbir constexprişlev haline gelir . Standart kütüphanenin constexpr, şeyleri işaretlemede dilin gerçekten gerisinde olduğunu biliyorum , ancak 2017 <algorithm>yılına kadar, bir sürü başka şey gibi oldukça karmaşıktı. Henüz - std::swapdeğildi. Bu işaretlemeyi engelleyen garip bir dil kusuru olduğunu belirsiz bir şekilde hatırlıyorum, ancak detayları unutuyorum. Birisi bunu …

2
Std :: chrono :: yıl depolama alanı gerçekten en az 17 bit mi?
Gönderen cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Kullanılması libc++, bunun altını depolama görünüyor std::chrono::yearsDİR shortimzalanır 16 bit . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Cppreference veya başka bir şey üzerinde bir yazım hatası …
14 c++  chrono  c++20  libc++ 

1
constexpr ise - neden atılan ifade tam olarak kontrol edilir?
GCC 10 c ++ 20 consteval ile uğraşıyordum ve bu kodu yazdım #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; } else …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.