Pytania otagowane jako c++

C ++ jest językiem programowania ogólnego przeznaczenia. Został pierwotnie zaprojektowany jako rozszerzenie do C i ma podobną składnię, ale teraz jest to zupełnie inny język. Ten znacznik służy do pytań o kod (kompilowany) za pomocą kompilatora C ++. Użyj tagu specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardową [C ++ 11], [C ++ 14], [C ++ 17] lub [C ++ 20] itp.

4
Przerwanie zmiany w C ++ 20 czy regresja w clang-trunk / gcc-trunk podczas przeciążania porównania równości z wartością logiczną inną niż logiczna?
Poniższy kod kompiluje się dobrze z clang-trunk w trybie c ++ 17, ale psuje się w trybie c ++ 2a (nadchodzące c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; …

1
Implementacja nawiasów kątowych przez GCC obejmuje. Dlaczego musi być tak, jak opisano poniżej?
Ten dokument w sekcji 2.6 „Obliczone obejmuje” zawiera następujący akapit: Jeśli linia zostanie rozwinięta do strumienia tokena rozpoczynającego się od <tokena i zawierającego token>, wówczas tokeny między <a pierwszym> są łączone w celu utworzenia nazwy pliku, która ma zostać uwzględniona. Każda biała spacja między tokenami jest zredukowana do pojedynczej spacji; …
11 c++  c  gcc  language-lawyer 



1
Wydajny algorytm obcięcia łańcucha, sekwencyjnie usuwający równe prefiksy i sufiksy
Limit czasu na test: 5 sekund Limit pamięci na test: 512 megabajtów Otrzymujesz ciąg sdługości n( n≤ 5000). Możesz wybrać dowolny właściwy prefiks tego łańcucha, który jest również jego sufiksem, i usunąć albo wybrany prefiks, albo odpowiedni sufiks. Następnie możesz zastosować analogiczną operację do wynikowego ciągu i tak dalej. Jaka …

1
Dlaczego static_cast jest potrzebny w implementacji gcc programu is_nothrow_constructible?
type_traitsDlaczego wzięto z wdrożenia GCC, dlaczego jest static_casttutaj potrzebny? 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>()))> {};

3
Jak dowiedzieć się, jakie funkcje wygenerował kompilator?
Wiem o funkcjach generowanych przez kompilator, regule trzech i regule pięciu. W scenariuszach rzeczywistych może nie być trywialne ustalenie, które z funkcji generowanych przez kompilator (konstruktory, operatory przypisania, destruktor) faktycznie zostały utworzone przez kompilator. Czy jest jakiś sposób, aby wyświetlić listę funkcji generowanych przez kompilator dla określonej klasy? Interesuje mnie …
11 c++  c++11 

1
Unqualified sort () - dlaczego kompiluje się, gdy jest używany na std :: vector, a nie na std :: array, i który kompilator jest poprawny?
Dzwoniąc std::sort()na 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)); } Zarówno gcc, jak i clang zwracają błąd podczas sortowania w opcji std::array- mówi clang błąd: użycie niezadeklarowanego identyfikatora „sort”; miałeś na myśli …
11 c++  c++17 


2
Czy T musi być kompletnym typem do użycia w `std :: declval <T>`?
Rozważ ten przykład (pochodzący stąd ): #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; } To kompiluje bez …


1
Czy zmienną wbudowaną można zmienić po inicjalizacji w C ++ 17?
Mój scenariusz jest następujący (działał w clang, ale nie w gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Problem polega na tym, że zmienna wbudowana pokazywała 0 w miejscach, w których spodziewałem się 28, ponieważ była ona …
11 c++  visual-c++  dll  clang  c++17 

1
poprawność std :: function const
Załóżmy, że mam typ na żądanie: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Zauważ, że mutable_callablema non-const, operator()która modyfikuje zmienną składową ..... Załóżmy teraz, że utworzyłem std::functionz mojego typu: std::function&lt;int()&gt; foo = mutable_callable{}; Teraz mogę to zrobić: void invoke(std::function&lt;int()&gt; const&amp; …

1
Czy rozpiętość może być constexpr?
Wszystkie konstruktory std :: span są zadeklarowane jako constexpr, jednak nie wydaje się, aby którykolwiek z nich działał w kontekście constexpr. Odznaczenie któregokolwiek z poniższych constexpr spowoduje błąd kompilacji. #include &lt;array&gt; #include &lt;span&gt; int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array&lt;int, 3&gt; array{ 0, …
11 c++  constexpr  c++20 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.