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

2
C ++ 'da SFINAE işlevine yaklaşımlar
SFINAE işlevini yoğun olarak bir projede kullanıyorum ve aşağıdaki iki yaklaşım (stil dışında) arasında herhangi bir fark olup olmadığından emin değilim: #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = …
40 c++  sfinae 


4
Şablon meta programlama
Birisi bana açıklayabilir, ilk şablon meta-programlama yolu neden sonsuz döngüye gidiyor, ikincisi doğru çalışıyor. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static const int val = N; }; int …

2
Remove_reference işlevler üzerinde neden çalışmıyor?
Geçen gün bazı metaprogramlama yaparken garip bir şeyle karşılaştım. Temelde bu iddiayı aşağıya (beklediğim gibi) geçmiyor. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); İlk başta bir işlev referansı tanımlayan sözdizimsel bir hata yaptığımı sanıyordum, ancak bu iddia geçerliliğini koruyor. static_assert(std::is_same_v<void()&, void()&>); Ayrıca remove_referencecppreference kaynak kopyalamak kendimi uygulamayı denedim ama bu da işe yaramadı. Burada neler …
38 c++  templates  types  c++17 



4
Şablonları kullanarak bir işlevi aşırı yükleme
Şablonları kullanarak bir işlev tanımlamak çalışıyorum ve typename int veya anEnum (tanımladığım belirli bir numaralandırma) olmasını istiyorum. Aşağıdaki denedim ama başarısız oldu: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} Yapmaya çalıştığım, aşırı yüklenmiş iki işlevi tanımlamak yerine şablonları …


2
İşaretçiye yeni bir işaretçi tahsis etmek yasal mı?
İşlevlere işaretçiler, geçersiz işaretçi içinde saklanamayacakları için düz veri işaretçileri değildir. Yine de, bir fonksiyon işaretçisinin kopyasını aşağıdaki koddaki gibi dinamik bellekte (gcc ve clang olarak) saklayabildiğim görünüyor. C ++ Standardına göre böyle bir kod yasal mı, yoksa bu bir çeşit derleyici uzantısı mıdır? Ayrıca, işlev işaretçisi için ortaya çıkan …
33 c++ 


3
C ++ decltype ve parantezler - neden?
Konu daha önce tartışılmıştı , ancak bu bir kopya değil. Birisi decltype(a)ve arasındaki farkı sorduğunda decltype((a)), normal cevap - abir değişkendir, (a)bir ifadedir. Bu cevabı tatmin edici bulmuyorum. Birincisi, abir ifadedir. Birincil ifade seçenekleri arasında, diğerleri arasında - (ifade) id-ifadesi Daha da önemlisi, decltype ifadesi parantezleri çok, çok açık bir …

4
Neden iki madde, gcc'de aynı şekilde görülen aynı türden çözülüyor?
Cümleleri kullanarak iki temel sınıfım var class MultiCmdQueueCallback { using NetworkPacket = Networking::NetworkPacket; .... } class PlcMsgFactoryImplCallback { using NetworkPacket = Networking::NetworkPacket; .... } Sonra bir sınıf beyan ederim class PlcNetwork : public RouterCallback, public PlcMsgFactoryImplCallback, public MultiCmdQueueCallback { private: void sendNetworkPacket(const NetworkPacket &pdu); } derleyici daha sonra 'NetworkPacket' için …

2
Bir std :: vector eklerken sınıf alanlarıyla garip davranış
Aşağıdaki durumda bazı garip davranışlar (clang ve GCC) buldum. nodesBir elemanım, bir sınıf örneği olan bir vektörüm var Node. Daha sonra vektöre nodes[0]yeni eklenen bir fonksiyon çağırıyorum Node. Yeni Düğüm eklendiğinde, çağıran nesnenin alanları sıfırlanır! Bununla birlikte, işlev bittiğinde tekrar normale dönüyor gibi görünüyorlar. Bunun minimal tekrarlanabilir bir örnek olduğuna …

6
Eksik #include'un programı zamanında kırması mümkün mü?
#includeDerleme devam ederken eksik bir çalışma zamanında yazılımı kıracak herhangi bir durum var mı ? Başka bir deyişle, #include "some/code.h" complexLogic(); cleverAlgorithms(); ve complexLogic(); cleverAlgorithms(); her ikisi de başarılı bir şekilde inşa edilir, ancak farklı davranır mı?
31 c++ 

4
C ve C ++ 'da denilen (…) nedir?
Bunun kullanımlarından biri ..., C ve C ++ 'daki varyasyon varlıklarını belirtmektir . Onun adı ne? Bu şekilde kullanıldığında operatör veya başka bir şey olarak sınıflandırılıyor mu? İlgili başka ayrıntılar var ...mı? Düzenleme: Amacını biliyorum .... Hem C hem de C ++ 'da benzer olduğunu umuyorum, adını ve sınıflandırmasını soruyorum.

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.