«c++» etiketlenmiş sorular

C ++ genel amaçlı bir programlama dilidir. Başlangıçta C'nin bir uzantısı olarak tasarlanmıştır ve benzer bir sözdizimine sahiptir, ancak şimdi tamamen farklı bir dildir. Bir C ++ derleyicisiyle derlenecek kod (sorulacak) ile ilgili sorular için bu etiketi kullanın. Belirli bir standart revizyon [C ++ 11], [C ++ 14], [C ++ 17] veya [C ++ 20] vb. İle ilgili sorular için sürüme özgü bir etiket kullanın.

1
Şablon sınıfındaki yapıda C ++ derleyici sorunu
Aşağıdaki kod yok değil gcc veya clang derlemek. template<class T> class foo{}; template<class T> class template_class_with_struct { void my_method() { if(this->b.foo < 1); }; struct bar { long foo; } b; }; Hata mesajı: error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class foo' 8 …

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{ …

6
C ++ 'daki genel yapıları nasıl karşılaştırabilirim?
Yapıları genel bir şekilde karşılaştırmak istiyorum ve böyle bir şey yaptım (asıl kaynağı paylaşamıyorum, bu yüzden gerekirse daha fazla ayrıntı isteyin): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } İki yapı örneği aynı üyeye sahip …

2
Bir sabit ifade nasıl bu kadar hızlı değerlendirilebilir?
Derleme zamanında değerlendirilen const ifadelerini deniyorum. Ancak derleme zamanında yürütüldüğünde inanılmaz hızlı görünen bir örnekle oynadım. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); } int main () { long int res = fib(45); std::cout << res; return 0; } Bu kodu …
13 c++  const  constexpr 



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 // …

2
lambda'da static_assert ile constexpr varsa, hangi derleyici doğrudur?
Biz kullanmak istediğinizde static_assertbir de if constexprbazı şablon parametresine durum bağımlı yapmak zorundadır. İlginç bir şekilde, gcc ve clang, kod bir lambda içine sarıldığında katılmıyor. Aşağıdaki kod gcc ile derlenir, ancak clang if constexprdoğru olamazsa bile iddiayı tetikler . #include <utility> template<typename T> constexpr std::false_type False; template<typename T> void foo() …

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++ 


2
Hangi başlık dosyalarının ekleneceğini nasıl belirleyebilirim?
Diyelim ki aşağıdaki kod (çok basit). #include <iostream> int main() { std::cout << std::stoi("12"); } Bu hem g ++ hem de clang üzerinde iyi derler; ancak MSVC'de aşağıdaki hatayla derlenemez: hata C2039: 'stoi': 'std' üyesi değil hata C3861: 'stoi': tanımlayıcı bulunamadı Bunun iki eski derleyicinin bir parçası olarak içerdiği ve …
13 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 

1
Gcc'de belirsiz operatör
Bazı stl kaplarını yazdırmak için bir işlev şablonu yaptım #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; } int …
13 c++  c++17 


1
Farklı bloklardaki aynı adlandırılmış extern yerel değişkenleri neden c ++ 'da derleyiciler arasında farklı bağlantılar elde eder?
Yerel değişkenleri dışlamak için hangi bağlantıların verildiğini kontrol ederken, derleyiciler arasında bazı farklı davranışların olduğunu gördüm. Örneğin , yorum değişkeninde gördüğünüz kodun altında test edersem değişkenin varfarklı bağlantıları vardır. // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; // internal linkage …
12 c++  g++  clang++  extern  linkage 

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.