«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
`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 …


2
Derleme zamanında "const char *" türünde iki dizeyi birleştirmek mümkün mü?
Açıkçası, bir constexprişlevde iki dize değişmezi birleştirebiliriz , ancak dize değişmezinin constexpraşağıdaki koddaki gibi başka bir işlev tarafından döndürülen bir dize ile birleştirilmesine ne dersiniz ? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: return "2"; case 4: return "4"; …
12 c++  c++17 

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

1
Genel olmayan tür için genel takma ad
Geçerli C ++ olup olmadığını merak ediyorum: class Test { struct PrivateInner { PrivateInner(std::string const &str) { std::cout << str << "\n"; } }; public: using PublicInner = PrivateInner; }; //Test::PrivateInner priv("Hello world"); // Ok, private so we can't use that Test::PublicInner publ("Hello World"); // ?, by using public alias …


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 …

5
Sıralı sayıların verimli istikrarlı toplamı
Kayan nokta pozitif sayılar ( std::vector<float>, boyut ~ 1000) oldukça uzun bir listem var . Sayılar azalan düzende sıralanır. Siparişi takip ederek onları toplarsam: for (auto v : vec) { sum += v; } Sanırım bazı sayısal kararlılık problemim olabilir, çünkü vektörün sonuna yakın sumolandan çok daha büyük olacak v. …

2
Atom vektörünün başlatılması
Düşünmek: void foo() { std::vector<std::atomic<int>> foo(10); ... } Foo'nun içeriği artık geçerli mi? Yoksa açık bir şekilde döngü yapmam ve bunları başlatmam gerekir mi? Godbolt üzerinde kontrol ettik ve iyi görünüyor, ancak standart bu noktada çok karışık gibi görünüyor. Std :: vector yapıcı o ekler diyor varsayılan eklenen örneklerini std::atomic<int>vardır …
12 c++  vector  atomic 


1
Neden bu kodun g ++ ile derlenmesi çok uzun sürüyor?
Aşağıdaki kodu göz önünde bulundurun: template<int i> class A { typedef A<i-1> B; B x, y; }; template<> class A<0> { char m; }; int main() { A<LEVEL> a; } Aşağıdaki Bash komutuyla derlemesini g ++ ile karşılaştırırken (g ++ 8.3.0 ile) for ((level=1; level<30; ++level)); do echo -n ${level}, …

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.