C ++ 14 to nazwa standardu C ++, zatwierdzonego w 2014 roku. Opiera się on na poprzednim standardzie C ++ 11, ulepszając język podstawowy i bibliotekę standardową oraz dodając kilka funkcji.
c ++ 14 wprowadził generyczne lambdy, które umożliwiły napisanie: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Jest bardzo jasne, że ta ogólna lambda funcdziała tak, jak działałaby funkcja szablonowa func. Dlaczego komisja C ++ zdecydowała …
Próbuję skompilować następujący program puli wątków opublikowany w przeglądzie kodu, aby go przetestować. /codereview/55100/platform-independant-thread-pool-v4 Ale otrzymuję błędy threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before ‘>’ token …
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 …
Kiedy czytałem kod źródłowy seastar , zauważyłem, że istnieje zwana struktura związkowa, tx_sidektóra ma tylko jednego członka. Czy to jakiś hack, aby poradzić sobie z pewnym problemem? Do Twojej wiadomości wklejam tx_sideponiższą strukturę: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { …
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 …
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 ++ …
(W nawiązaniu do tego pytania i odpowiedzi .) Przed standardem C ++ 17 w [basic.compound] / 3 znajdowało się następujące zdanie : Jeśli obiekt typu T znajduje się pod adresem A, wskaźnik typu cv T *, którego wartością jest adres A, wskazuje na ten obiekt, niezależnie od tego, w jaki …
Mam komponent, którego używam podczas implementowania typów ogólnych niskiego poziomu, które przechowują obiekt dowolnego typu (może być typem klasy lub nie), który może być pusty, aby skorzystać z pustej optymalizacji podstawowej : template <typename T, unsigned Tag = 0, typename = void> class ebo_storage { T item; public: constexpr ebo_storage() …
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. …
Pracuję w projekcie z C ++ 11 i próbowałem śledzić kod #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Otrzymuję błąd kompilatora error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ Ten sam wynik jest …
Odkryłem, że lvaluezamknięcia lambda zawsze można przekazać jako rvalueparametry funkcji. Zobacz następującą prostą demonstrację. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function …
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 …
Mam szablon funkcji, który pobiera wiele różnych typów podczas wprowadzania. Spośród tych typów tylko jeden z nich ma getInt()funkcję. Dlatego chcę, aby kod uruchamiał funkcję tylko dla tego typu. Proszę zaproponować rozwiązanie. Dzięki #include <type_traits> #include <typeinfo> class X { public: int getInt(){ return 9; } }; class Y{ }; …
Próbuję zrozumieć typy wyrażeń C ++, a im więcej czytam, tym bardziej byłem zdezorientowany, ponieważ uważam, że szkic C ++ jest bardzo trudny do strawienia, dlatego wolę inne zasoby, ale albo one są sobie sprzeczne, albo nie biorą pod uwagę, że brzmienie i definicja między wersjami C ++ mocno się …
Poniższy bezsensowny przykład nie kompiluje się, ale czy istnieje jakiś inny sposób przekazania szablonu zmiennej jako argumentu szablonu szablonu? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Wypróbuj Eksplorator kompilatoró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.