C ++ 11 to nazwa standardu C ++, zatwierdzonego w 2011 roku. Zastępuje on poprzedni standard C ++ 03, dodając różne podstawowe zmiany i poprawki języka oraz ulepszoną i rozszerzoną bibliotekę standardową.
Biorąc pod uwagę bardzo trywialną funkcję, int transform(int val) { return (val + 7) / 8; } Powinno być bardzo oczywiste, że łatwo jest przekształcić tę funkcję w constexprfunkcję, pozwalając mi jej używać podczas definiowania constexprzmiennych, tak jak: constexpr int transform(int val) { return (val + 7) / 8; } …
Ostatnio zastanawiałem się, dlaczego słowo kluczowe autozostało wybrane w C ++ 11 do oznaczenia zmiennej, której typ musi zostać wyprowadzony przez kompilator, jak w auto x = 1; Od var wydaje się bardziej powszechny w innych językach programowania (np. C #, Scala, JavaScript) i O ile rozumiem nową semantykę autozgodności …
Jakie są zalety / wady używania autosłowa kluczowego, szczególnie w przypadku pętli? for(std::vector<T>::iterator it = x.begin(); it != x.end(); it++ ) { it->something(); } for(std::map<T>::iterator it = x.begin(); it != x.end(); it++ ) { it->second->something(); } for(auto it = x.begin(); it != x.end(); it++ ) { it->?? } Wygląda na …
„Przedwczesna optymalizacja jest źródłem wszelkiego zła” Myślę, że wszyscy możemy się zgodzić. I bardzo się staram tego uniknąć. Ale ostatnio zastanawiałem się nad praktyką przekazywania parametrów przez const Reference zamiast Value . Zostałem nauczony / nauczony, że nietrywialne argumenty funkcji (tj. Większość typów nieprymitywnych) powinny być przekazywane przez odniesienie do …
Pracuję prawie wyłącznie w C ++ 11/14, i zwykle kulą się, gdy widzę taki kod: std::int64_t mArray; mArray |= someMask << 1; To tylko przykład; Mówię ogólnie o manipulacji bitami. Czy w C ++ jest naprawdę sens? Powyższe jest zniekształcające i podatne na błędy, a użycie std::bitsetpozwala na: łatwiej modyfikować …
Zamknięte. To pytanie jest nie na temat . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było tematem dotyczącym wymiany stosów inżynierii oprogramowania. Zamknięte 4 lata temu . Pisałem C ++ intensywnie między 8 a 10 lat temu. Od tego czasu przeszedłem do C # z powodów …
Poniższy kod wygląda na pierwszy rzut oka raczej nieszkodliwie. Użytkownik używa tej funkcji bar()do interakcji z niektórymi funkcjami biblioteki. (Mogło to nawet działać przez długi czas, odkąd bar()zwróciło odwołanie do wartości nietrwałej lub podobnej.) Teraz jednak zwraca po prostu nową instancję B. Bponownie ma funkcję, a()która zwraca odwołanie do obiektu …
Wiem, że jest to dyskusyjna praktyka, ale załóżmy, że jest to dla mnie najlepsza opcja. Zastanawiam się, jaka jest właściwa technika, aby to zrobić. Podejście, które widzę jest następujące: 1) Zrób klasę przyjaciela klasą, której metodę chcę przetestować. 2) W klasie przyjaciela utwórz metodę publiczną, która wywołuje metodę prywatną testowanej …
Przeglądając ten artykuł na temat bezpieczeństwa współbieżności Rust: http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html Zastanawiałem się, ile z tych pomysłów można osiągnąć w C ++ 11 (lub nowszym). W szczególności czy mogę utworzyć klasę właściciela, która przenosi własność na dowolną metodę, na którą może zostać przekazana? Wygląda na to, że C ++ ma tak wiele …
Niedawno wpadłem na następującą sytuację. class A{ public: void calculate(T inputs); } Po pierwsze, Areprezentuje obiekt w świecie fizycznym, co jest silnym argumentem za nierozdzielaniem klasy. Teraz calculate()okazuje się dość długą i skomplikowaną funkcją. Widzę trzy możliwe struktury: napisz to jako ścianę tekstu - zalety - wszystkie informacje są w …
Kiedy nauczyłem się C ++ dawno temu, mocno podkreślono, że część C ++ polega na tym, że podobnie jak pętle mają „niezmienniki pętli”, klasy mają również niezmienniki związane z czasem życia obiektu - rzeczy, które powinny być prawdziwe tak długo, jak obiekt żyje. Rzeczy, które powinny zostać ustalone przez konstruktorów …
Większość języków programowania funkcyjnego (np Common Lisp, Scheme / rakieta, Clojure, Haskell, Scala, Ocaml, SML) obsługuje niektórych funkcji wspólnego wyższego rzędu na listach, takich jak map, filter, takeWhile, dropWhile, foldl, foldr(patrz np Common Lisp, Scheme / rakieta, Clojure obok siebie dokumentacja , dokumentacja Haskell , Scala , OCaml i SML …
Testujemy bibliotekę pod C ++ 11 (tj -std=c++11.). Biblioteka korzysta z auto_ptrtego wzoru: Foo* GetFoo() { autoptr<Foo> ptr(new Foo); // Initialize Foo ptr->Initialize(...); // Now configure remaining attributes ptr->SomeSetting(...); return ptr.release(); } C ++ 11 jest przestarzałe auto_ptr, więc chcemy się od niego odejść. Jednak kod obsługuje zarówno C ++ …
Pracuję na dużej aplikacji, która musi działać na kilku platformach. Niektóre z tych platform obsługują niektóre funkcje C ++ 11 (np. MSVS 2010), a niektóre nie obsługują żadnych (np. GCC 4.3.x). Oczekuję, że ta sytuacja utrzyma się przez kilka lat (moje najlepsze przypuszczenia: 3-5 lat). Biorąc to pod uwagę, chciałbym …
Czy starsze kompilatory C ++ (np. VS2008 i gcc3.4) mogą łączyć się z bibliotekami zewnętrznymi napisanymi w C ++ 11? Myślę, że pliki .lib C ++ 11 są na tym etapie tylko bajtowym kodem i nie powinny niepokoić starszym kompilatorom, w jaki sposób zostały wygenerowane, o ile można je w …
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.