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
Jak uzyskać adres funkcji C ++ lambda w samej lambda?
Próbuję dowiedzieć się, jak uzyskać w sobie adres funkcji lambda. Oto przykładowy kod: []() { std::cout << "Address of this lambda function is => " << ???? }(); Wiem, że potrafię uchwycić lambda w zmiennej i wydrukować adres, ale chcę to zrobić w miejscu, gdy wykonuje się ta anonimowa funkcja. …
53 c++  c++11  lambda  c++14  c++17 

3
Deklaracja C ++ i nawiasy - dlaczego?
Temat był wcześniej omawiany , ale to nie jest duplikat. Kiedy ktoś pyta o różnicę między decltype(a)i decltype((a)), jak zwykle odpowiedź brzmi - ajest to zmienna, (a)jest wyrazem. Uważam tę odpowiedź za niezadowalającą. Po pierwsze, ajest to także wyrażenie. Opcje wyrażenia podstawowego obejmują między innymi: ( wyrażenie ) wyrażenie id …

6
Czy bezpiecznie jest zamienić dwa różne wektory w C ++, używając metody std :: vector :: swap?
Załóżmy, że masz następujący kod: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Wyobraź sobie, że wektor nie jest std::stringjeszcze klasą: std::vector<Widget> WidgetVector; std::vector<Widget2> Widget2Vector; …
30 c++  c++11  vector  stdvector  swap 



3
Różnica w zachowaniu zmiennego wychwytywania funkcji lambda z odniesienia do zmiennej globalnej
Stwierdziłem, że wyniki są różne w różnych kompilatorach, jeśli użyję lambda do przechwycenia odwołania do zmiennej globalnej za pomocą słowa kluczowego podlegającego modyfikacji, a następnie zmodyfikowania wartości w funkcji lambda. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = n; return [m] () mutable -> …

2
Które z silników losowych liczb <losowych> powinno się faktycznie stosować w praktyce? std :: mt19937?
Załóżmy, że chcesz korzystać z narzędzi C ++ &lt;random&gt;w praktycznym programie (dla pewnej definicji „praktyczny” - ograniczenia tutaj są swego rodzaju częścią tego pytania). Masz mniej więcej taki kod: int main(int argc, char **argv) { int seed = get_user_provided_seed_value(argc, argv); if (seed == 0) seed = std::random_device()(); ENGINE g(seed); // …
21 c++  c++11  random 

4
Jak wywołać odpowiedniego konstruktora typu szablonu?
Jak w poniższym kodzie mogę sprawić, by linia z komentarzem działała tak samo, jak linia tuż nad nią? Chciałbym, aby był to ogólny kod, który wywołuje odpowiedniego konstruktora szablonu Type. #include &lt;string&gt; #include &lt;iostream&gt; template &lt;typename Type&gt; struct Class { Type data; Class(Type data) : data(data) { } }; int …

4
Ciągłe wyliczanie C ++ 11
Czy istnieje sposób sprawdzenia w C ++ 11, czy wyliczenie jest ciągłe ? W pełni uzasadnione jest podawanie wartości wyliczeniowych, które nie są. Czy w C ++ 14, C ++ 17 jest jakaś cecha typu, a może C ++ 20, aby sprawdzić, czy wyliczanie jest ciągłe? Należy tego użyć w …
17 c++  c++11  c++14  c++17  c++20 

2
Czy to stary konstruktor w stylu C ++?
Oto kawałek kodu C ++. W tym przykładzie wiele bloków kodu wygląda jak wywołania konstruktora. Niestety, kod blokowy nr 3 nie jest (możesz to sprawdzić za pomocą https://godbolt.org/z/q3rsxn i https://cppinsights.io ). Myślę, że jest to stara notacja C ++, która mogłaby wyjaśnić wprowadzenie nowej notacji konstrukcyjnej C ++ 11 za …
17 c++  c++11 

3
Szablony variadic: rozwijaj argumenty w grupach
Mam funkcję, która przyjmuje dwa argumenty: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } I variadic, który powinien przekazywać swoje argumenty parami: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % 2 == 0); ( …

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

1
Czy mogę zainicjować listę std :: vector z doskonałym przekazywaniem elementów?
Zauważyłem, że zbiorczą listę initalization std :: vector wykonuje skopiować inicjalizacji gdy ruch jest bardziej dotyczy. W tym samym czasie wiele lokacebacków robi to, co chcę. Mogłem tylko wymyślić to niedoskonałe rozwiązanie pisania funkcji szablonu init_emplace_vector. Jest to jednak optymalne tylko dla nieprecyzyjnych konstruktorów pojedynczej wartości . template &lt;typename T, …

3
Dlaczego wymiar tablicy jest częścią tego typu?
Czytając książkę C ++ Primer natrafiłem na następujące stwierdzenie: „Liczba elementów w tablicy jest częścią typu tablicy”. Więc chciałem dowiedzieć się, używając następującego kodu: #include&lt;iostream&gt; int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout&lt;&lt;typeid(Array1).name()&lt;&lt;std::endl; //prints A4_c std::cout&lt;&lt;typeid(Array2).name()&lt;&lt;std::endl; //prints A6_c return 0; } Co …
14 c++  arrays  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.