Cześć, próbuję używać std::threadz G ++. Oto mój kod testowy #include <thread> #include <iostream> int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Kompiluje się, ale kiedy próbuję go uruchomić, wynikiem jest: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted Wersja mojego kompilatora: $ …
Dlaczego C ++ 11 powoduje, że funkcje „ deleted” uczestniczą w rozwiązywaniu przeciążeń ? Dlaczego jest to przydatne? Innymi słowy, dlaczego są ukryte, a nie całkowicie usunięte?
Mam projekt, który obecnie używa C ++ 11/14, ale wymaga czegoś takiego std::filesystem, co jest dostępne tylko w C ++ 17, stąd nie mam szansy, aby go obecnie używać. Widzę jednak, że jest dostępny w moim obecnym kompilatorze jako std::experimental::filesystem. Czy warto korzystać z funkcji eksperymentalnych, zakładając, że w przyszłości …
Rozważ następujący program: #include <string> #include <vector> using namespace std; struct T { int a; double b; string c; }; vector<T> V; int main() { V.emplace_back(42, 3.14, "foo"); } To nie działa: $ g++ -std=gnu++11 ./test.cpp In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h:34:0, from /usr/include/c++/4.7/bits/allocator.h:48, from /usr/include/c++/4.7/string:43, from ./test.cpp:1: /usr/include/c++/4.7/ext/new_allocator.h: In instantiation …
Jeśli chcę zbudować bardzo prostą tablicę, taką jak int myArray[3] = {1,2,3}; Powinienem użyć std::arrayzamiast tego? std::array<int, 3> a = {{1, 2, 3}}; Jakie są zalety używania std :: array nad zwykłymi? Czy jest bardziej wydajny? Po prostu łatwiejsze w obsłudze do kopiowania / dostępu?
C ++ 0x dodaje hash<...>(...). Nie mogłem jednak znaleźć hash_combinefunkcji, jak przedstawiono w boost . Jaki jest najczystszy sposób na wdrożenie czegoś takiego? Być może używając C ++ 0x xor_combine?
Jak mogę uzyskać liczbę argumentów do zmiennej funkcji szablonu? to znaczy: template<typename... T> void f(const T&... t) { int n = number_of_args(t); ... } Jaki jest najlepszy sposób realizacji number_of_argspowyższego?
Jest to kontynuacja mojego poprzedniego pytania o ładnie zadrukowane pojemniki STL , dla których udało nam się opracować bardzo eleganckie iw pełni ogólne rozwiązanie. W następnym kroku chciałbym dołączyć drukowanie ładnie std::tuple<Args...>przy użyciu szablonów wariadycznych (więc jest to ściśle C ++ 11). Po std::pair<S,T>prostu mówię std::ostream & operator<<(std::ostream & o, …
Jedną z moich ulubionych nienawiści do języków wywodzących się z C (jako matematyka) jest to (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Jakie jest najlepsze rozwiązanie? C ++ dopuszcza możliwość przeciążania szablonów i operatorów, ale oba te elementy są dla mnie mętne. …
W C ++ 11 emplace_back()jest ogólnie preferowane (pod względem wydajności), push_back()ponieważ umożliwia konstruowanie w miejscu, ale czy nadal tak jest w przypadku używania push_back(std::move())z już zbudowanym obiektem? Na przykład, czy emplace_back()nadal jest preferowany w takich przypadkach jak poniżej? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course assuming we …
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()jest jednym z prymitywów wymiany porównawczej udostępnionych w C ++ 11. Jest słaba w tym sensie, że zwraca fałsz, nawet jeśli wartość obiektu jest równa expected. Wynika to z fałszywej awarii na niektórych platformach, na których do zaimplementowania jest używana sekwencja instrukcji (zamiast …
Jeśli mam następującą deklarację: float a = 3.0 ; czy to błąd? Przeczytałem w książce, która 3.0jest doublewartością i muszę ją określić jako float a = 3.0f. Czy tak jest?
W poniższym C++programie modyfikowanie statycznego elementu członkowskiego danych z constfunkcji działa poprawnie: class A { public: static int a; // static data member void set() const { a = 10; } }; Ale modyfikowanie niestatycznego elementu członkowskiego danych z constfunkcji nie działa: class A { public: int a; // non-static …
Rozważam użycie niektórych funkcji C ++ 11 (jak autona przykład) w niektórych projektach wieloplatformowych (Windows + Mac). W systemie Windows Visual Studio obsługuje części nadchodzącego standardu C ++ 11, który pozwoliłby mi uprościć części kodu, więc naturalnie byłbym zainteresowany rozpoczęciem korzystania z tych funkcji. Ale o ile mi wiadomo, obecna …
C ++ 0x spowoduje, że następujący i podobny kod będzie źle sformułowany, ponieważ wymaga tak zwanej konwersji zawężającej a doubledo a int. int a[] = { 1.0 }; Zastanawiam się, czy ten rodzaj inicjalizacji jest często używany w kodzie świata rzeczywistego. Ile kodów zostanie uszkodzonych przez tę zmianę? Czy naprawienie …
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.