Pytania otagowane jako c++11

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

2
Czy kiedykolwiek jest źle oznaczać constexpr funkcji C ++?
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; } …
26 c++  c++11 

1
Motywacja i pułapki (?) Słowa kluczowego auto w C ++ 11
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 …

6
Czy powinienem używać nowej funkcji „auto” C ++ 11, szczególnie w pętlach?
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 …
20 c++  c++11 

5
Czy przekazywanie argumentów jako stałych odwołań do przedwczesnej optymalizacji?
„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 …



2
Kto ponosi winę za ten zakres w oparciu o odniesienie do tymczasowości?
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 …
15 c++11 

6
Metoda prywatna testu jednostkowego w c ++ przy użyciu klasy znajomego
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 …

1
możliwe jest osiągnięcie modelu własności Rust za pomocą ogólnego opakowania C ++?
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 …

2
Czy to dobry wzór: zastąpienie długiej funkcji serią lambdów?
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 …
14 c++11  lambda 

1
Niezmienniki czasu życia obiektu a semantyka ruchu
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 …

1
Obsługa C ++ 11 dla funkcji list wyższych
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 …

2
Jak obsłużyć zmiany w projekcie dla wycofania auto_ptr w C ++ 11?
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 ++ …
12 design  c++  c++11 

3
Osiągnięcie kompatybilności z C ++ 11
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 …
12 c++  c++11 


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.