«c++17» etiketlenmiş sorular

C ++ 17, 2017'de onaylanan C ++ standardının adıdır. Önceki C ++ 14 standardını temel alır, çekirdek dili ve standart kütüphaneyi geliştirir ve birkaç yeni dil özelliği ekler.

3
Bir dönüşüm operatörünün bu aşırı yüklenmesi neden seçildi?
Aşağıdaki kodu düşünün . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Burada ikinci dönüştürme operatörü aşırı yük çözünürlüğü ile seçilir. Neden? Anladığım kadarıyla, iki operatör sırasıyla operator int &&() constve hesabından …

3
C ++ 'da tip listelerinin Kartezyen ürününü nasıl oluşturabilirim?
Kendini açıklayıcı. Temelde, şöyle listeleri var diyelim: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Değişken sayıda tip listesi olabilir. Kartezyen bir ürün listesi nasıl alabilirim? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, type_list<somestructA, somestructB, double>, type_list<somestructA, somestructB, short> >; Burada verildiği …


4
İade sırasında örtük dönüştürmeye izin verilmiyor
#include <optional> bool f() { std::optional<int> opt; return opt; } Derlemez: 'return': cannot convert from 'std::optional<int>' to 'bool' Referansa danışmak Bir açıklama bulmayı düşünürdüm, ama olması gerektiği gibi okudum. Örtük dönüşümler, T1 türünde bir ifade, bu türü kabul etmeyen, ancak başka bir T2 türünü kabul eden bağlamda kullanıldığında gerçekleştirilir; özellikle: …

3
Belirli bir std :: varyant türünü belirli bir ölçütle bölme
Belirli bir değişken türüne göre using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; iki varyant türü bildir using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; nereden V1gelen tüm aritmetik türleri içerir Vve gelen V2tüm aritmetik olmayan türleri içerir V? V bir şablon sınıfının …
20 c++  c++17  std-variant 


4
Std :: dönüşümü std :: back_inserter ile kullanmak geçerli midir?
Cppreference için şu örnek kod vardır std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Ancak şunu da söylüyor: std::transformunary_opveya 'nın siparişe göre uygulanmasını garanti etmez binary_op. Bir diziye sırayla bir işlev uygulamak veya bir dizinin öğelerini değiştiren bir işlevi uygulamak için kullanın std::for_each. …

1
Std :: atom yapıcı neden C ++ 14 ve C ++ 17'de farklı davranıyor?
C ++ 11 ile bir projede çalışıyorum ve aşağıdaki kodu denedim #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Derleyici hatası alıyorum error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ Aynı sonuç C ++ …
19 c++  c++14  c++17  stdatomic 

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
Global const char [] yerine constexpr string_view değiştiren var mı?
Ekibimiz 10+ yaş C ++ kod tabanı ile çalışıyor ve yakın zamanda C ++ 17 derleyicisine geçti. Bu yüzden kodumuzu modernize etmenin yollarını arıyoruz. YouTube'daki bir konferans görüşmesinde, const char*küresel dizeleri değiştirmek için öneriyi duydum constexpr string_view. Kodumuzda çok sayıda const char*küresel dize sabitine sahip olduğumuzdan, bilmemiz gereken herhangi bir …

1
std :: çift <otomatik, otomatik> dönüş türü
Ben oynamalar autoiçinde std::pair. Aşağıdaki kodda, fonksiyonun bir template parametresine bağlı olan bir tür fdöndürmesi beklenir std::pair. Çalışan bir örnek: ÖRNEK 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, 2.0}; // …

1
C ++ derleyicileri extern değişkenini nasıl bulur?
Bu programı g ++ ve clang ++ ile derledim. Bir fark var: g ++ 1 yazdırır, ancak clang ++ 2 yazdırır. Görünüşe göre g ++: extern değişkeni en kısa kapsamda tanımlanmıştır. clang ++: extern değişkeni en kısa global kapsamda tanımlanır. C ++ spec bu konuda herhangi bir şartname var mı? …


1
Bu std :: gcd bir hata mı?
Ben std::gcdbeklenmedik buldum bu davranış karşılaştım : #include &lt;iostream&gt; #include &lt;numeric&gt; int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type&lt;decltype(a), decltype(b)&gt;::type; C ca = std::abs(a); C cb = b; std::cout &lt;&lt; a &lt;&lt; ' ' …


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.