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 -> …
[basic.scope.pdecl] / 1 standardowego projektu C ++ 20 zawierał następujący (nienormatywny) przykład w notatce (częściowy cytat sprzed scalenia żądania ściągnięcia 3580 , patrz odpowiedź na to pytanie): unsigned char x = x; [...] x jest inicjalizowany z własną (nieokreśloną) wartością. Czy to rzeczywiście ma dobrze zdefiniowane zachowanie w C ++ …
Powiedzmy, że mam shared_ptrniestandardowy alokator i niestandardowy usuwacz. Nie mogę znaleźć w standardzie niczego, co mówi o tym, gdzie powinien być przechowywany usuwacz: nie mówi, że niestandardowy alokator zostanie użyty do pamięci usuwacza, i nie mówi, że nie będzie. Czy jest to nieokreślone, czy coś mi brakuje?
W C ++ 20 koncepcja POD jest przestarzała, prawdopodobnie dlatego, że jest to bezsensowna złożona cecha bycia trywialnym i standardowym układem. Jednak definicja POD w wersji roboczej C ++ 20 nie jest dokładnie „zarówno trywialna, jak i standardowa”; to jest właściwie: Klasa POD jest klasą, która jest zarówno klasą trywialną, …
#include <optional> bool f() { std::optional<int> opt; return opt; } Nie kompiluje: 'return': cannot convert from 'std::optional<int>' to 'bool' Odniesienie do konsultacji Chciałbym znaleźć wyjaśnienie, ale przeczytałem je tak, jak powinno być dobrze. Konwersje niejawne są wykonywane za każdym razem, gdy wyrażenie pewnego typu T1 jest używane w kontekście, który …
Rozważać int main() { auto a = new int[0]; delete[] a; // So there's no memory leak } Czy między inicjowaniem i usuwaniem kopii można odczytywać wskaźnik w a + 1? Ponadto, nie pozwalają na język kompilator zestaw ado nullptr?
Cppreference ma ten przykładowy kod dla std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Ale mówi również: std::transformnie gwarantuje zastosowania unary_oplub binary_op. Aby zastosować funkcję do sekwencji w kolejności lub zastosować funkcję, która modyfikuje elementy sekwencji, użyj std::for_each. Ma to prawdopodobnie umożliwić równoległe …
Czy wartość thiswskaźnika jest gwarantowana jako stała przez cały czas życia określonego obiektu? Nie mogę sobie wyobrazić przypadku, w którym to się zmieni, ale nie wiem, czy czegoś mi nie brakuje.
JLS : Operatorem o najniższym priorytecie jest strzałka wyrażenia lambda (->) , po której następują operatory przypisania. Podążano w jakim kierunku (zwiększenie priorytetu, zmniejszenie priorytetu)? - „obserwowane” oznacza przypisanie o wyższym priorytecie lub niższym priorytecie (w odniesieniu do operatora strzałki)? Wydaje mi się, że rośnie, ponieważ „najniższy” (dla strzałki) oznacza …
Rozważ ten kod: void foo() { goto bar; int x = 0; bar: ; } GCC i Clang odrzucają to , ponieważ przejście do bar:obejścia inicjalizacji zmiennej. MSVC nie narzekają na wszystko (z wyjątkiem stosowania xpo bar:powoduje ostrzeżenie). Możemy zrobić podobnie z switch: void foo() { switch (0) { int …
C ++ używa tego streamofftypu do reprezentowania przesunięcia w strumieniu (pliku) i jest zdefiniowany w następujący sposób w [stream.types]: using streamoff = implementation-defined ; Typ streamoff jest synonimem jednego z podpisanych podstawowych integralnych typów o wystarczającym rozmiarze, aby reprezentować maksymalny możliwy rozmiar pliku dla systemu operacyjnego. 287) 287) Zazwyczaj długi. …
Biorąc pod uwagę następujący szablon klasy: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; definiujemy Innerosobno dla każdej specjalizacji Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; a następnie raz zdefiniuj funkcję członka fdla wszystkich specjalizacji Outer: auto Outer<T>::f(Inner) -> void { } ale Clang …
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.