Pytania otagowane jako c++11

Użyj tego znacznika do kodu, który musi zostać skompilowany jako C ++ 11 (nie używając żadnych funkcji wprowadzonych w C ++ 14 lub nowszej).

5
Dlaczego lambda ma rozmiar 1 bajtu?
Pracuję z pamięcią niektórych lambd w C ++, ale trochę mnie dziwi ich rozmiar. Oto mój kod testowy: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } Możesz go …
90 c++  c++11  lambda  c++14  sizeof 

4
Dlaczego nie ma domyślnego przypisania do przenoszenia / konstruktora przenoszenia?
Jestem prostym programistą. Zmienne składowe mojej klasy najczęściej składają się z typów POD i kontenerów STL. Z tego powodu rzadko muszę pisać operatory przypisania lub konstruktory kopiujące, ponieważ są one implementowane domyślnie. Dodajmy do tego, że jeśli używam std::movena obiektach, które nie są ruchome, używa operatora przypisania, co oznacza, że …


3
Wycofanie statycznego słowa kluczowego… koniec?
W C ++ możliwe jest użycie staticsłowa kluczowego w jednostce translacyjnej, aby wpłynąć na widoczność symbolu (deklaracja zmiennej lub funkcji). W n3092 to zostało wycofane: Załącznik D.2 [depr.static] Używanie słowa kluczowego static jest przestarzałe podczas deklarowania obiektów w zakresie przestrzeni nazw (patrz 3.3.6). W n3225 zostało to usunięte. Tylko artykuł …
89 c++  static  c++11  standards 

3
Co to jest const void?
Opis std::is_voidstwierdza, że: Zapewnia stałą składową, która jest równa true, jeśli T jest typem void, const void, volatile void lub const volatile void. Więc co mogłoby być const void, lub volatile void? Ta odpowiedź stwierdza, że const voidzwracany typ byłby nieprawidłowy (jednak kompiluje się na VC ++ 2015) const void …
89 c++  c++11  c++14 

4
Jak przechowywać różne argumenty szablonów?
Czy można w jakiś sposób zapisać pakiet parametrów do późniejszego wykorzystania? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } Później: …



6
Funkcja zwracająca wyrażenie lambda
Zastanawiam się, czy można napisać funkcję zwracającą funkcję lambda w C ++ 11. Oczywiście problemem jest zadeklarowanie takiej funkcji. Każda lambda ma typ, ale tego typu nie można wyrazić w C ++. Myślę, że to nie zadziała: auto retFun() -> decltype ([](int x) -> int) { return [](int x) { …
88 c++  function  c++11  lambda 


3
Domyślna, wartość i zerowy bałagan inicjalizacji
Jestem bardzo zdezorientowany co do inicjalizacji wartości i domyślnej oraz zerowej. a zwłaszcza wtedy, gdy zaczynają stosować różne standardy C ++ 03 i C ++ 11 (i C ++ 14 ). Cytuję i próbuję rozszerzyć naprawdę dobrą odpowiedź Value- / Default- / Zero- Init C ++ 98 i C ++ …
88 c++  c++11  c++14  c++03  c++98 

5
Czy istnieje nieatomowy odpowiednik std :: shared_ptr? A dlaczego takiego nie ma w <memory>?
To jest trochę dwuczęściowe pytanie, dotyczące atomowości std::shared_ptr: 1. O ile wiem, std::shared_ptrjest to jedyny inteligentny wskaźnik w &lt;memory&gt;tym atomowym. Zastanawiam się, czy jest std::shared_ptrdostępna nieatomowa wersja programu (w środku nic nie widzę &lt;memory&gt;, więc jestem również otwarty na sugestie spoza standardu, jak te w Boost). Wiem, że boost::shared_ptrjest również …

5
Przekazywanie wspólnych wskaźników jako argumentów
Jeśli zadeklaruję obiekt zawinięty we współdzielony wskaźnik: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); następnie chciałem przekazać to jako argument do metody: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Czy powyższe po prostu zwiększa liczbę referencji shared_pt i wszystko jest w porządku? A może pozostawia zwisający wskaźnik? Nadal masz …



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.