«c++11» etiketlenmiş sorular

C ++ 11 olarak derlenmesi gereken kod için bu etiketi kullanın (C ++ 14 veya sonraki sürümlerde sunulan hiçbir özelliği kullanmayın).

3
Bir dizinin boyut türü neden türünün bir parçasıdır?
C ++ Primer kitabını okurken, şu ifadeyle karşılaştım: "Bir dizideki öğelerin sayısı dizinin türünün bir parçasıdır." Bu yüzden aşağıdaki kodu kullanarak öğrenmek istedim: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c std::cout<<typeid(Array2).name()<<std::endl; //prints A6_c return 0; } Ve ilginç …
14 c++  arrays  c++11 

3
İşlev şablonunun içindeki işlevi yalnızca işlevi tanımlanmış olan türler için yürüt
Ben girdi olarak birçok farklı türde alır bir işlev şablonu var. Bu tiplerden sadece bir tanesinin bir getInt()işlevi vardır. Bu nedenle, kodun yalnızca bu tür için işlevi çalıştırmasını istiyorum. Lütfen bir çözüm önerin. Teşekkürler #include <type_traits> #include <typeinfo> class X { public: int getInt(){ return 9; } }; class Y{ …

4
Rahat sipariş açıklaması açıklamada yanlış mı?
In belgelenmesi std::memory_ordercppreference.com üzerinde rahat sipariş örneği vardır: Rahat sipariş Etiketlenen atomik işlemler memory_order_relaxedsenkronizasyon işlemleri değildir; eşzamanlı bellek erişimleri arasında emir vermezler. Sadece atomisite ve modifikasyon sırası tutarlılığını garanti ederler. Örneğin, başlangıçta x ve y ile sıfır, // Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, std::memory_order_relaxed); // B // …

1
MSVC'de olası derleyici hatası
Aşağıdaki kod gcc ve clang (ve diğer birçok C ++ 11 derleyicisiyle) derlenir #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} }; int …
13 c++  c++11  visual-c++ 

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 

2
Burada enum değişkeni neden bir değerdir?
Misal: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Bunu derlediğimde aşağıdaki hatayı alıyorum: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to …


3
Derleyicinin hangi işlevleri ürettiğini nasıl öğrenebilirim?
Derleyici tarafından üretilen fonksiyonları, üçün kuralını ve beşin kuralını biliyorum. Gerçek dünya senaryolarında, derleyici tarafından oluşturulan işlevlerin (kurucular, atama operatörleri, yıkıcı) tam olarak hangisinin derleyici tarafından oluşturulduğunu anlamak önemsiz olmayabilir. Belirli bir sınıf için derleyici tarafından üretilen işlevleri listelemenin bir yolu var mı? Öncelikle Visual Studio 2019 ve Xcode ile …
11 c++  c++11 

5
Lambda C ++ üçlü ataması
Aşağıdaki snippet'in neden derlenmediğine dair bir fikriniz var mı? "Hata: operands?: Farklı türleri var" hatasıyla şikayet ediyor auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;


2
Dönüş türünü açıkça belirtmesine rağmen lambda'ya çağrı belirsiz
Aşırı yüklenmiş bir fonksiyon, lambda türünün karar verilebilir olması durumunda std::function( her ikisini de almalı (bir yanıltıcı olursam lütfen beni düzeltin)) Her iki işlevi de almalıdır . tanımlandı? ( [&]() -> Type {}) Mevcut çözümüm için referans yakalamaya ihtiyacım olduğunu, kodun bunun için mantığı içerdiğini lütfen unutmayın. Aşağıdaki örnekte sorun …

2
C ++ şablon şablonu bağımsız değişken türleri kesinti
Ben bulur ve dizeleri konteyner üzerinde gidiyor gibi bir desen maçlar yazdırır kodu var. Baskı işlevi gerçekleştirilir foo şablonlu edilir Kod #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for (auto …

3
Nullptr uintptr_t biçimine dönüştürülebilir mi? Farklı derleyiciler katılmıyor
Bu programı düşünün: #include <cstdint> using my_time_t = uintptr_t; int main() { const my_time_t t = my_time_t(nullptr); } Msvc v19.24 ile derlenemedi: <source>(5): error C2440: '<function-style-cast>': cannot convert from 'nullptr' to 'my_time_t' <source>(5): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to an integral type …
10 c++  c++11  gcc  visual-c++  clang 

3
Aşağıdaki durumda, bağımlı türler için neden typen kullanmak gerekli değildir?
Burada bir tür referansı kaldırma hakkında okuyordum . Aşağıdaki örneği verir: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); print_is_same<int, std::remove_reference<int>::type>(); // …

1
Örnek oluşturmak zorunda kalmadan std :: array <T, N> öğelerinin sayısını nasıl alabilirim?
Var std::array&lt;T, N&gt;::size(), ama statik değil, bu yüzden bir örneği gerektirir std::array. (Olup döndürür değeri elde etmek için bir yol var Nbir std::array&lt;T, N&gt;dizinin bir örneğini oluşturmak zorunda kalmadan)? Normal bir dizi için kullanmış olabilirdim sizeof, ama sizeof(std::array&lt;T, N&gt;) == N * sizeof(T)doğru olduğunu garanti edemiyorum.
9 c++  arrays  c++11  sizeof 

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.