«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.

3
std :: std :: dizi ile bit_cast
Yaptığı son konuşma ise “Modern C Tipi cinaslı ++” Timur Doumler söyledi o std::bit_castbit atmak kullanılamaz floatbir içine unsigned char[4]C tarzı diziler bir işlev döndürülen edilemez çünkü. std::memcpyC ++ 23 (veya üstü) gibi bir şey reinterpret_cast<unsigned char*>(&f)[i]iyi tanımlanıncaya kadar kullanmalı veya beklemeliyiz . C ++ 20'de bir std::arrayile kullanabilir miyiz …

1
İfade türleri, sürümler arasında C ++ ile neden değişti?
C ++ ifade türlerini anlamaya çalışıyorum ve ne kadar çok okursam, o kadar karıştı, çünkü C ++ taslağını sindirimi çok zor buluyorum ve bu nedenle diğer kaynakları tercih ediyorum ama ya birbirleriyle çelişiyorlar ya da C ++ sürümleri arasındaki ifadeler ve tanımlamalar büyük ölçüde değişir. Aşağıda aşağıdaki taslaklara atıfta bulunuyorum: …
13 c++  c++11  c++14  c++17  c++20 

1
`Equality_comparable_with` için“ common_reference ”gerekir mi?
Kavramequality_­comparable_with<T, U> türü bu nesnelerin bildirmek için tasarlanmıştır Tve Ubirbirine eşit karşılaştırılabilir, ve eğer, bu beklenen anlama sahiptir. Bu iyi. Ancak, bu kavramın da var olması gerekir common_reference_t<T&, U&>. İçin birincil itici güç common_referenceve onun işlevselliği , proxy yineleyicilerinin etkinleştirilmesi , bu yineleyiciler arasındaki referenceve value_typebu yineleyiciler arasındaki ilişkiyi temsil …

1
Şablon sınıfında C ++ 20 sınıf dışı tanım
C ++ C ++ 20 standardına kadar, bir şablon sınıfının bazı özel üyelerini kullanan sınıf dışı bir operatör tanımlamak istediğimizde, buna benzer bir yapı kullanırdık: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { public: constexpr Foo(T k) …
12 c++  templates  c++20 


1
Bitişik üyelerin sınıflarda çakışmasını ne önler?
Aşağıdaki üçü düşünün struct: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; int4 bayt olan tipik platformlarda , boyutlar, hizalamalar ve toplam dolgu 1 aşağıdaki gibidir: struct size alignment padding …

1
Linux paket yöneticileri C ++ 20 modüllerini nasıl işler?
Şimdi 2020 yılındayız ve uzun zamandır beklenen C ++ modülleri özelliğinin yanı sıra C ++ 20 geliyor. Ancak CppCon'da birkaç görüşmeyi izledikten sonra, özellikle Linux paket yöneticileri için (pacman, apt, emerge, vb ...) C ++ modüllerinin garip bir yerde olduğunu görüyorum. Öğrendiklerimden, C ++ modülleri Derleyiciye bağlı Clang'da GCC tarafından …

2
Bir kavramın bir işleve aktarılması
Kavramlar derleme zamanı tahminleri olarak tanımlandığından, bu tahminleri derleme zamanı algoritmaları için yeniden kullanmak da mümkün müdür? Örneğin, bir demet içindeki tüm tiplerin bir konsepte uygun olup olmadığını kontrol etmek mümkün müdür? Gördüğüm kadarıyla, bir kavramı bir işleve herhangi bir şekilde aktarmak mümkün değil, bu da beni bu durumlar için …


4
Boolean olmayan dönüş değeri ile eşitlik karşılaştırması aşırı yüklenirken C ++ 20'de değişiklik mi yoksa clang-trunk / gcc-trunk'ta gerileme mi?
Aşağıdaki kod c ++ 17 modunda clang-trunk ile iyi derler, ancak c ++ 2a (yaklaşan c ++ 20) modunda kırılır: // 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 main() { Meta …

1
Span, constexpr olabilir mi?
Std :: span'ın tüm kurucuları constexpr olarak ilan edilir, ancak hiçbirinin bir bağlam bağlamında çalışmasını sağlayamıyorum. Aşağıdaki bağlamlardan herhangi birinin kaldırılması derleme hatasına neden olacaktır. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array<int, 3> array{ 0, 1, 2 }; using …
11 c++  constexpr  c++20 

1
Neden std :: span karşılaştırma işleçlerinden yoksundur?
Değil miydi std::spanalt bölgelere hafif referans olarak tasarlanmış std::vector/ std::array/ düz diziye ve benzeri? Ayrıca, API'larında tutarlı olmaları için karşılaştırma operatörleri içermemeli midir? Dışlamanın ardındaki neden neydi? Not: Karşılaştırma operatörleri tarafından, ben de tamamı anlamında ( <, <=, ...) ya da uzay gemisi<=>
10 c++  std  c++20  std-span 

1
Ayrılan depolama birimindeki işaretçi aritmetiğine C ++ 20'den beri izin veriliyor mu?
C ++ 20 standardında, dizi türlerinin örtük ömür boyu tür olduğu söylenir . Örtük olmayan bir ömür boyu türüne sahip bir dizinin dolaylı olarak oluşturulabileceği anlamına mı geliyor? Örtülü bir dizinin oluşturulması dizinin öğelerinin oluşturulmasına neden olmaz mı? Bu durumu düşünün: //implicit creation of an array of std::string //but not …

1
C ++ 20'de görünümleri olan kaplar oluşturabilecek miyiz?
C ++ 20 standart sürümü ile aralıklar C ++ 'a geliyor. Benim sorum: Herhangi bir aralıkta standart kütüphane kapları (mevcut) oluşturabilecek miyiz? Ve daha da önemlisi, menzil görünümleriyle? Örneğin, bu: #include <vector> #include <iostream> #include <ranges> int main() { auto sq = [](int x) { return x * x; }; …
10 c++  c++20  range-v3 

1
İhtiyaç ifadelerinin kapalı kapsamdaki değişkenleri “yakalamasına” izin veriliyor mu?
Aşağıdaki örnekte, işlev bağımsız değişkenleri, bunları kullanan bir ifadenin iyi biçimlendirilip biçimlendirilmediğini bir zorunlu ifadeyle test etmek için kullanılır. Zorunlu ifade hiçbir argüman almaz; doğrudan işlev kapsamındaki değişkenleri kullanır: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr (requires { v.resize(n); }) v.resize(n); } …

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.