language-lawyer

Dlaczego operator trójdzielny z przecinkami ocenia tylko jedno wyrażenie w przypadku rzeczywistym?

Obecnie uczę się C++ z książką C++ Primer i jednym z ćwiczeń w książce jest:]} Wyjaśnij, co robi następujące wyrażenie: ... do umieszczania nawiasów wokół gałęzi true w ten sposób: someValue ? (++x, ++y) : --x, --y; Ale to wciąż wyniki w 11 10.

Wyświetlanie wskaźników null z % p jest niezdefiniowanym zachowaniem?

Czy wyświetlanie wskaźników null ze specyfikatorem Konwersji %p jest niezdefiniowanym zachowaniem? #include <stdio.h> ... main(void) { void *p = NULL; printf("%p", p); return 0; } Pytanie dotyczy standardu C, a nie implementacji C.

Zamieszanie dotyczące inicjalizacji tablicy w C

W języku C, jeśli zainicjalizujesz tablicę Tak: int a[5] = {1,2}; Wtedy wszystkie elementy tablicy, które nie są zainicja ... rozumiem, dlaczego a[0] drukuje 1 zamiast 0? Czy to nieokreślone zachowanie? Uwaga: to pytanie zostało zadane w wywiadzie.

Kiedy można uzyskać dostęp do wskaźnika do "martwego" obiektu?

Po pierwsze, dla wyjaśnienia, Jestem NIE mówiąc o dereferencji nieprawidłowych wskaźników! Rozważ następujące dwa przykłady ... Podczas gdy cytowałem wyżej standard C99, chciałbym wiedzieć, czy zachowanie różni się w którymkolwiek ze standardów C++.

Czy używanie lambda w plikach nagłówkowych może naruszać ODR?

Można zapisać w pliku nagłówkowym: inline void f () { std::function<void ()> func = [] {}; } Lub class C { std::f ... uga próbka narusza ODR za każdym razem, czy tylko wtedy, gdy przynajmniej jeden konstruktor znajduje się w pliku nagłówkowym?

Przypisanie dodawania + = zachowanie w wyrażeniu

Ostatnio natknąłem się na to pytanie: assignment operator Chain understanding. Odpowiadając na to pytanie zacząłem wątpić we ... 6. Kiedy powinniśmy założyć, że a ' s wartość będzie odzwierciedlona w innych miejscach w wyrażeniu, a kiedy nie powinniśmy?

Czy std:: stoi jest rzeczywiście bezpieczny w użyciu?

Odbyłam z kimś wspaniałą rozmowę o upadkach std::stoi. Mówiąc wprost, używa std::strtol wewnętrznie i rzuca, jeśli zgłosi błą ... enie tego wyjątku. Czy mój dowód jest ważny, czy std::stoi nie gwarantuje odrzucenia tego wyjątku, gdy zostanie podany "abc"?

reinterpretacja pomiędzy char * i std:: uint8 t * - bezpieczna?

Teraz wszyscy czasami musimy pracować z danymi binarnymi. W C++ pracujemy z sekwencjami bajtów i od początku char był naszym ... implementowany jako Rozszerzony Typ unsigned integer i rozszerzone typy unsigned integer nie są zawarte w §3.10/10. Co teraz?

reinterpretacja rzutu tworzenie trywialnie domyślnego obiektu

Cppreference† stwierdza, że: Obiekty z trywialnymi domyślnymi konstruktorami mogą być tworzone za pomocą reinterpret_cas ... loc: placement-new jest wymagana, aby formalnie wprowadzić nowy obiekt i uniknąć potencjalnego niezdefiniowanego zachowania.

Dlaczego wnioskowanie typu ogólnego Java 8 wybiera to przeciążenie?

Rozważ następujący program: public class GenericTypeInference { public static void main(String[] args) { print ... e używając poziomu języka Java 7. Zachowanie było zgodne z Java 7. To było oczekiwane, ale nadal czułem potrzebę sprawdzenia.

Anonimowe typy wewnątrz lambda

W to pytanie , user @Holger dostarczył odpowiedź , która pokazuje nietypowe użycie anonimowych klas, o czym nie byłem świado ... Czy rzeczywiście bezpieczne aby napisać kod w ten sposób? jest na to jakaś skrótowa składnia, czy tylko na tyle nas stać?

Czy użycie if (0) do pominięcia sprawy w przełączniku powinno działać?

Mam sytuację, w której chciałbym, aby dla dwóch przypadków w instrukcji C++ switch oba wypadły do trzeciego przypadku. W szcz ... c Próbowałem w C i C++ (oba z clang), i zrobił to samo. Moje pytania brzmią: czy to poprawne C / C++? Ma robić to, co robi?

Dlaczego w Roslyn są klasy async state machines (a nie structs)?

Rozważmy tę bardzo prostą metodę asynchroniczną: static async Task myMethodAsync() { await Task.Delay(500); } Kiedy ... arówno edycję, jak i kontynuację oraz lepszą wydajność w produkcji. Ciekawe rzeczy, Dziękuję wszystkim, którzy wzięli udział!

Dlaczego zachowanie std:: memcpy miałoby być niezdefiniowane dla obiektów, które nie są trywialnie Kopiowalne?

Z http://en.cppreference.com/w/cpp/string/byte/memcpy : Jeśli obiekty nie są TriviallyCopyable (np. Skalary, tablice, ... ły program undefined. Zgadzam się jednak, że wydaje się, że w tym przypadku można ominąć UB i odpowiednio zmodyfikować CPP.

Zmienione reguły dla konstruktorów chronionych w C++17?

Mam ten przypadek testowy: struct A{ protected: A(){} }; struct B: A{}; struct C: A{ C(){} }; struct D: A{ D() = default; } ... LITY or FITNESS FOR A PARTICULAR PURPOSE. Czy ta zmiana zachowania jest częścią C++17 czy jest to błąd w obu kompilatorach?

Jaki jest typ literału null?

Dear all, ciekawe jaki jest typ null dosłowny w C#? W języku Java literał null jest typu specjalnego null: Istnieje rów ... rsja starego kumpla NULL), który jest typu std::nullptr_t. Szukałem MSDN o C#, ale Specyfikacja nic na ten temat nie mówi.

Czy gwarantowana długość "long" wynosi co najmniej 32 bity?

Czytając Standard C++, zawsze rozumiałem, że rozmiary integral fundamental types w C++ były następujące: sizeof(char) <= ... ual Plane (2) zdefiniowane w <climits> jako: LONG_MIN -2147483647 // -(2^31 - 1) LONG_MAX +2147483647 // 2^31 - 1

Dziwne wyrażenie "- > * [] " w kodzie źródłowym C++ cpp.biblioteka Reacta

Oto fragment C++, który znalazłem w dokumentacji cpp.react library : auto in = D::MakeVar(0); auto op1 = in ->* [] (int ... h,height,depth) ->* [] (int w, int h, int d) { return w * h * d; }; Czy to poprawne C++11 (lub C++14)? Co to znaczy?

Klasy template specjalizacja częściowe porządkowanie i synteza funkcji

Zasady wyboru, która specjalizacja szablonu klasy jest preferowana, obejmują przepisanie specjalizacji na szablony funkcji i ... dzy 1 A 2. Ale dlaczego? Syntetyzowane szablony funkcji nie są niejednoznaczne. Jaka jest różnica między tymi dwoma sprawami?

Czy jest przydatna sprawa z użyciem instrukcji switch bez szelek?

[[3]}W H&S5 spotkałem się z "najbardziej dziwaczną" instrukcją przełączania (8.7.1, str. 277) nie używającą szelek. Oto ... Nie tylko switch (i); (co jest legalne, ale NOP), ale za pomocą co najmniej dwóch etykiet case mających jakiś przydatny cel?