«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
Farklı derleyicilerde boşluğa ** dönüştürme
Farklı derleyiciler aracılığıyla aşağıdaki kodu çalıştırıyorum: int main() { float **a; void **b; b = a; } Ben toplamak mümkün kadarıyla, void **bir değil başka pointer herhangi dönüşüm derlemek ya da en azından bir uyarı atmak gerektiğini araçlarının genel bir işaretçi. Ancak, işte benim sonuçlarım (tümü Windows üzerinde yapılır): gcc …
9 c++  c  cuda 

1
Bir işlev işaretçisi dizisinden işlev işaretçisini şablon argümanı olarak iletme
Bir şablon işaretçisi olarak işlev işaretçisi bir dizi bir işlev işaretçisi geçmek istiyorum. Intellisense bir şeylerin yanlış olduğundan şikayetçi olsa bile kodum MSVC kullanarak derleniyor. Hem gcc hem de clang kodu derleyememektedir. Aşağıdaki örneği düşünün: static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer functions[] = { test …
9 c++  templates  c++14 

1
Shift_right () 'ın C ++ 20'de nasıl uygulanması amaçlanmıştır?
C ++ 20'de, <algorithm>başlık iki yeni algoritma kazanır: shift_left()veshift_right() . Her ikisi de herhangi bir LegacyForwardIterator'ı kabul eder. Çünkü shift_left(), "hamlelerin ibaşlangıçtan itibaren artan sırayla gerçekleştirildiği ​0" belirtilir; için shift_right(), " ForwardItLegacyBidirectionalIterator gereksinimlerini karşılıyorsa, hareketlerin ibaşlangıçtan itibaren azalan sırada gerçekleştirildiği last - first - n - 1" belirtilir. Uygulamanın oldukça …

1
sınıf uzmanlığında clang / gcc tutarsızlığı
Ben yapılandırılmış bağlama için C ++ 17 özel bir sınıf tuple_size/ uzmanlaşmaya çalışırken bu sorunla karşılaştım tuple_element. Aşağıdaki kod GCC'de derlenir, ancak clang'da değil (her iki gövde sürümü, aşağıdaki bağlantıya bakın). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using sfinae_v_t = sfinae_t<T, typename …

3
unique_ptr <0 VEYA operatörden daha az ne yapar?
Benim tarafımdan yazılmamış kodla uğraşıyorum. Bu ifade var: // p is type of std::unique_ptr&lt;uint8_t[]&gt; if (p &lt; 0) { /* throw an exception */ } Peki p &lt; 0bu bağlamda ne anlama geliyor? Açık doküman sayfasına , benim dava olduğuna inanıyoruz 16) y &lt; nullptrnerede, 0olduğu nullptr. Ama ne yapar?


2
Punning türü yazın: yerinde önemsiz yapı
Bunun oldukça yaygın bir konu olduğunu biliyorum, ancak tipik UB'nin bulunması kolay olduğu kadarıyla, bu varyantı bulamadım. Yani, verilerin gerçek bir kopyasını kaçınarak resmi olarak Pixel nesnelerini tanıtmaya çalışıyorum. Bu geçerli mi? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v&lt;Pixel&gt;); Pixel* promote(std::byte* data, std::size_t count) …

1
Yeni (this) ThisClass () kötü bir fikir mi?
class FooView final : public Something { ... void refresh() { this-&gt;~FooView(); new (this) FooView(); } } Bu deyimi hiç görmedim ve gerçekten ince ve dağınık olabilir gibi görünüyor, ama aslında onunla ilgili bir sorun düşünemiyorum ( FooViewnihai olduğu sürece ). Bu kötü bir fikir mi?




1
Boş göstericiye sıfır eklenmesine izin veriliyor mu?
İşaretçi aritmetiğinin boş göstericiler için izin verilmediğini biliyorum. Ama şöyle bir şey olduğunu hayal et: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin() const { return …

1
İşaretçiyi bir Rcpp işlevinden "yeni" bir nesneye döndürmenin uygun yolu
1) potansiyel olarak büyük bir bellek baskısı olan özel bir sınıf ve 2) bazı ön işlem gerçekleştiren, daha sonra özel sınıfımızın yeni bir nesnesini oluşturan ve döndüren üst düzey bir işlev düşünün. Değere göre gereksiz kopyalamayı önlemek için işlev, nesneyi ayırır ve onun yerine bir işaretçi döndürür. Önceki bir tartışmaya …
9 c++  r  rcpp 

1
Şablonları ve isim aramayı anlamaya çalışmak
Aşağıdaki kod parçacıklarını anlamaya çalışıyorum Snippet # 1 template &lt;typename T&gt; struct A { static constexpr int VB = T::VD; }; struct B : A&lt;B&gt; { }; Ne gcc9 ne de clang9 buraya bir hata atmıyor. S. Bu kod neden derleniyor? A&lt;B&gt;B'den miras alırken somutlaşmıyor muyuz ? B'de VD yoktur, …

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.