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.

2
Jak przekazać odwołanie do argumentu nazwa typu szablonu
Czy istnieje sposób na przekazanie odwołania jako argumentu do argumentu o nazwie szablonu? Mam na myśli, że zamiast przekazać int, na przykład przekazać referencję do int. template <typename T> struct Foo { Foo(T arg) : ptr(arg) {} T ptr; }; int main() { int* a = new int(6); Foo<decltype(a)> foo1(a); …
15 c++  templates 

3
Sposób kompilacji w celu ustalenia najtańszego typu argumentu
Mam szablon, który wygląda tak template <typename T> class Foo { public: Foo(const T& t) : _t(t) {} private: const T _t; }; Czy istnieje sprytny sposób metaprogramowania szablonów, aby uniknąć używania stałej referencji w przypadkach, gdy typ argumentu jest trywialny, jak bool lub char? lubić: Foo(stl::smarter_argument<T>::type t) : _t(t) …
15 c++  stl 

4
Czy dozwolone jest kradzież zasobów z kluczy std :: map?
Czy w C ++ można ukraść zasoby z mapy, której już nie potrzebuję? Mówiąc dokładniej, załóżmy, że mam klucze std::mapz std::stringi chcę z niego zbudować wektor, kradnąc zasoby mapkluczy s za pomocą std::move. Zauważ, że taki dostęp do zapisu do kluczy psuje wewnętrzną strukturę danych (porządkowanie kluczy), mapale nie będę …

1
Jak kompilatory c ++ znajdują zmienną zewnętrzną?
Kompiluję ten program przez g ++ i clang ++. Jest różnica: g ++ drukuje 1, ale clang ++ drukuje 2. Wygląda na to, że g ++: zmienna zewnętrzna jest zdefiniowana w najkrótszym zakresie. clang ++: zmienna zewnętrzna jest zdefiniowana w najkrótszym globalnym zakresie. Czy specyfikacja C ++ ma jakieś specyfikacje …

5
Zliczać wiersze pliku źródłowego za pomocą makr?
Czy za pomocą preprocesora C / C ++ można policzyć wiersze w pliku źródłowym do makra lub innej wartości dostępnej w czasie kompilacji? Np. Czy mogę zamienić MAGIC1, MAGIC2i MAGIC3poniżej, i jakoś uzyskać wartość 4 podczas używania MAGIC3? MAGIC1 // can be placed wherever you like before the relevant // …

2
Dlaczego `std :: basic_ios` ma konstruktora publicznego?
std::basic_iosma publicznego konstruktora : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); IMO, jedynym powodem, dla którego klasa ma konstruktora publicznego, jest użycie autonomicznej instancji tej klasy w programie. Jeśli klasa istnieje tylko po to, aby inne klasy z niej wywodziły się (jak się wydaje basic_ios), wszystkie konstruktory klasy powinny być protected. Wszystkie konstruktory …


2
Wątek C ++ wykorzystujący obiekt funkcji, w jaki sposób wywoływanych jest wiele destruktorów, ale nie konstruktorów?
Fragment kodu znajduje się poniżej: class tFunc{ int x; public: tFunc(){ cout<<"Constructed : "<<this<<endl; x = 1; } ~tFunc(){ cout<<"Destroyed : "<<this<<endl; } void operator()(){ x += 10; cout<<"Thread running at : "<<x<<endl; } int getX(){ return x; } }; int main() { tFunc t; thread t1(t); if(t1.joinable()) { cout<<"Thread …




2
Dlaczego std :: swap nie jest oznaczony constexpr przed C ++ 20?
W C ++ 20 std::swapstaje się constexprfunkcją. Wiem, że standardowa biblioteka naprawdę pozostawała w tyle za językiem w oznaczaniu rzeczy constexpr, ale do 2017 r. <algorithm>Była prawie niezrozumiała, podobnie jak wiele innych rzeczy. A jednak - std::swapnie było. Niejasno pamiętam jakąś dziwną wadę językową, która uniemożliwia to oznakowanie, ale zapominam …

3
Wywołanie funkcji ze wskaźnikiem na non-const i wskaźnikiem na const argumentów o tym samym adresie
Chcę napisać funkcję, która wprowadza tablicę danych i wyprowadza inną tablicę danych za pomocą wskaźników. Zastanawiam się, co jest wynikiem zarówno jeśli srci dstwskazał na samym adresem, bo wiem, kompilator może zoptymalizować dla const. Czy jest to niezdefiniowane zachowanie? (Oznacziłem zarówno C, jak i C ++, ponieważ nie jestem pewien, …

2
Czy pamięć std :: chrono :: years naprawdę ma co najmniej 17 bitów?
Z preferencji std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Używając libc++, wydaje się, że podkreśleniem std::chrono::yearsjest shortto, że podpisano 16 bitów . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Czy istnieje literówka na preferencjach lub coś …
14 c++  chrono  c++20  libc++ 

3
Sortowanie wektora w porządku malejącym w dwóch zakresach
Powiedzmy, że mam wektor liczb całkowitych: std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); Następnie sortuję je w kolejności malejącej: sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); To powoduje: 14 13 12 11 10 9 8 7 6 5 …

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.