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


4
Boolean olmayan dönüş değeri ile eşitlik karşılaştırması aşırı yüklenirken C ++ 20'de değişiklik mi yoksa clang-trunk / gcc-trunk'ta gerileme mi?
Aşağıdaki kod c ++ 17 modunda clang-trunk ile iyi derler, ancak c ++ 2a (yaklaşan c ++ 20) modunda kırılır: // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; int main() { Meta …

1
`String.assign (string.data (), 5)` iyi tanımlanmış mı yoksa UB mi?
Bir iş arkadaşı şunu yazmak istedi: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Ben dönen söyledi string_viewbeni huzursuz yapılan önsel , ve dahası, örtüşme burada bana UB benziyordu. line = strip_whitespace(line)Bu durumda eşdeğer olduğunu kesin olarak söyleyebilirim line = std::string_view(line.data(), 5). Buna string::operator=(const T&) [with T=string_view]eşdeğer …

1
Std yapmak için modern yaklaşım :: vektör hizalanmış bellek ayırmak
Aşağıdaki soru cevaplar eski ancak, ilgili ve kullanıcı gelen açıklama edilir Marc Glisse yeterince ele olabilir bu soruna 17 C ++ yana yeni yaklaşımlar olduğunu öne sürüldü. Hala tüm verilere erişirken, SIMD için düzgün çalışan hizalanmış bellek almaya çalışıyorum. Intel'de, kayan bir tür vektörü oluşturur ve boyutumu __m2568 kat azaltırsam, …


1
GCC'nin köşeli parantez uygulaması içerir. Neden aşağıda açıklandığı gibi olmalıdır?
2.6 Bilgisayarlı İçindekiler bölümündeki bu belge aşağıdaki paragrafa sahiptir: Çizgi, bir <belirteciyle başlayan ve bir> belirtecini içeren bir belirteç akışına genişlerse, eklenecek dosya adını oluşturmak için <ve ilk> arasındaki belirteçler birleştirilir. Jetonlar arasındaki boşluklar tek bir alana indirgenir; ilk <boşluktan sonraki herhangi bir boşluk korunur, ancak kapanmadan önceki boşluk> yok …
11 c++  c  gcc  language-lawyer 



1
Gcc'nin is_nothrow_constructible uygulamasında neden static_cast gereklidir?
GCC uygulamasından alınan type_traitsneden static_castburada gereklidir? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg> struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant<bool, // Why is `static_cast` needed here? noexcept(static_cast<_Tp>(declval<_Arg>()))> {};

1
Eşit önekleri ve sonekleri sırayla kaldırarak verimli dize kesme algoritması
Test başına süre sınırı: 5 saniye Test başına bellek sınırı: 512 megabayt Size bir suzunluk dizesi verilir n( n≤ 5000). Bu dizenin de soneki olan herhangi bir uygun öneki seçebilir ve seçilen öneki veya karşılık gelen soneki kaldırabilirsiniz. Ardından, elde edilen bir dizeye benzer bir işlem uygulayabilirsiniz. Bu tür işlemlerin …

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 

1
Niteliksiz sort () - neden std :: array üzerinde değil, std :: vector üzerinde kullanıldığında derleniyor ve hangi derleyici doğru?
Çağrılırken std::sort()bir on std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Hem gcc hem de clang, sıralamadaki bir hatayı döndürür std::array- clang diyor hata: bildirilmemiş 'sort' tanımlayıcısının kullanımı; Şunu mu demek istedin …
11 c++  c++17 

2
C ++ sahte kopya işlemleri nasıl bulunur?
Son zamanlarda aşağıdakileri yaşadım struct data { std::vector<int> V; }; data get_vector(int n) { std::vector<int> V(n,0); return {V}; } Bu kod ile ilgili sorun, yapı oluşturulduğunda bir kopya oluşması ve çözümün dönüş {std :: move (V)} yazmaktır Bu tür sahte kopya işlemlerini algılayacak linter veya kod analizörü var mı? Ne …

2
T'nin std :: declval <T> `de kullanılacak tam bir tür olması gerekir mi?
Bu örneği düşünün ( buradan geliyor ): #include &lt;type_traits&gt; #include &lt;iostream&gt; template &lt;typename U&gt; struct A { }; struct B { template &lt;typename F = int&gt; A&lt;F&gt; f() { return A&lt;F&gt;{}; } using default_return_type = decltype(std::declval&lt;B&gt;().f()); }; int main() { B::default_return_type x{}; std::cout &lt;&lt; std::is_same&lt; B::default_return_type, A&lt;int&gt;&gt;::value; } Bu gcc9.2 …


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.