Byłem zaskoczony, że to nie pojawiło się w moich wynikach wyszukiwania, pomyślałem, że ktoś by zapytał o to wcześniej, biorąc pod uwagę użyteczność semantyki ruchu w C ++ 11: Kiedy muszę (lub czy jest to dobry pomysł) uczynić klasę nieruchomą w C ++ 11? ( To znaczy przyczyny inne niż …
W operatorze przypisania klasy zwykle musisz sprawdzić, czy przypisywany obiekt jest obiektem wywołującym, aby nie zepsuć rzeczy: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } Czy potrzebujesz tego samego dla operatora przypisania ruchu? Czy jest kiedykolwiek sytuacja, w której this …
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 i nowsze wydrukuj "Używasz clang ++!" i ostrzegaj o niewykorzystaniu przechwytywania foo . g ++ 4.9.0 i nowsze wydrukuj "Używasz g ++!" i ostrzec o nieużywanym parametrze foo . Który …
Zawsze myślałem, że liczby losowe leżą między zerem a jedynką, bez1 , tj. Są to liczby z półotwartego przedziału [0,1). Potwierdza to dokumentacja na cppreference.com z dnia std::generate_canonical. Jednak gdy uruchamiam następujący program: #include <iostream> #include <limits> #include <random> int main() { std::mt19937 rng; std::seed_seq sequence{0, 1, 2, 3, 4, …
Kiedy używam [=] aby wskazać, że chciałbym, aby wszystkie zmienne lokalne były przechwytywane przez wartość w lambdzie, czy spowoduje to wszystkie zmienne lokalne w kopiowanej funkcji, czy tylko wszystkie zmienne lokalne, które są używane przez lambdę ? Na przykład, jeśli mam: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + …
Niedawno natknąłem się na dziwną dezoptymalizację (a raczej straciłem okazję do optymalizacji). Rozważ tę funkcję w celu wydajnego rozpakowywania tablic 3-bitowych liczb całkowitych na 8-bitowe liczby całkowite. Rozpakowuje 16 int w każdej iteracji pętli: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 2 lata temu . Popraw to pytanie Rozważać: struct Person { int height; int weight; int …
Pracowałem nad kodem w C ++ napisanym przez znajomego i otrzymuję następujący błąd, którego nigdy wcześniej nie widziałem podczas kompilacji z gcc4.6: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ Edycja: …
Użyłem std::tiebez zastanawiania się nad tym. Działa, więc właśnie zaakceptowałem, że: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } Ale jak działa ta czarna magia ? W jaki sposób tymczasowe tworzone …
Wiem, że w C ++ 11 dodali funkcję inicjowania zmiennej do zera jako takiej double number = {}; // number = 0 int data{}; // data = 0 Czy istnieje podobny sposób inicjalizacji a std::vectoro stałej długości do wszystkich zer?
Zrozumiałem, że kopiowanie przy zapisie nie jest realnym sposobem implementacji zgodności std::stringw C ++ 11, ale kiedy pojawiło się to niedawno w dyskusji, nie mogłem bezpośrednio poprzeć tego stwierdzenia. Czy mam rację, że C ++ 11 nie dopuszcza implementacji opartych na COW std::string? Jeśli tak, czy to ograniczenie zostało wyraźnie …
Jest to luźno związane z tym pytaniem: czy std :: thread jest w puli w C ++ 11? . Chociaż pytanie jest inne, intencja jest taka sama: Pytanie 1: Czy nadal ma sens używanie własnych (lub biblioteki innej firmy) pul wątków, aby uniknąć kosztownego tworzenia wątków? Wniosek z drugiego pytania …
Używam gcc 4.8.1 z http://hpc.sourceforge.net na Mac OSX Mountain Lion. Próbuję skompilować program C ++, który używa rozszerzeniato_string funkcji w <string>. Za -std=c++11każdym razem muszę używać flagi : g++ -std=c++11 -o testcode1 code1.cpp Czy istnieje sposób na włączenie tej flagi domyślnie?
Czy mógłbyś podać przykład, w którym static_assert(...)('C ++ 11') elegancko rozwiązałoby problem? Znam się na czasie wykonywania assert(...). Kiedy powinienem preferować static_assert(...)zamiast zwykłego assert(...)? Poza boosttym jest coś BOOST_STATIC_ASSERT, co się nazywa , czy to jest to samo co static_assert(...)?
Możliwe jest napisanie funkcji, która po skompilowaniu kompilatorem C zwróci 0, a skompilowana kompilatorem C ++ zwróci 1 (trywialne rozwiązanie #ifdef __cplusplusnie jest interesujące). Na przykład: int isCPP() { return sizeof(char) == sizeof 'c'; } Oczywiście powyższe zadziała tylko wtedy, gdy sizeof (char)nie jest takie samo jaksizeof (int) Innym, bardziej …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.