Poniższy kod kompiluje się dobrze z clang-trunk w trybie c ++ 17, ale psuje się w trybie c ++ 2a (nadchodzące c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; …
Ten dokument w sekcji 2.6 „Obliczone obejmuje” zawiera następujący akapit: Jeśli linia zostanie rozwinięta do strumienia tokena rozpoczynającego się od <tokena i zawierającego token>, wówczas tokeny między <a pierwszym> są łączone w celu utworzenia nazwy pliku, która ma zostać uwzględniona. Każda biała spacja między tokenami jest zredukowana do pojedynczej spacji; …
Rozważ następujące dwie klasy i interfejs: public class Class1 {} public class Class2 {} public interface Interface1 {} Dlaczego drugie wywołanie mandatorywywołuje przeciążoną metodę Class2, jeśli getInterface1i Interface1nie ma związku z Class2? public class Test { public static void main(String[] args) { Class1 class1 = getClass1(); Interface1 interface1 = getInterface1(); …
Mam kod, który wyszukuje i drukuje dopasowania wzorca przechodzące przez kontener ciągów. Drukowanie odbywa się w funkcji foo, która jest szablonowana Kod #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for …
Mój kod: #include <stdio.h> #include <limits.h> int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } Wynik: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Widzimy, że kiedy zwiększamy charzestaw zmiennych do CHAR_MAX, zawija się ono do CHAR_MIN. Czy to zachowanie jest gwarantowane? A może …
Edycja 2 : Debugowałem dziwny błąd testu, gdy funkcja wcześniej znajdująca się w pliku źródłowym C ++, ale przeniesiona do pliku C dosłownie, zaczęła zwracać nieprawidłowe wyniki. Poniższe MVE pozwala odtworzyć problem z GCC. Jednak gdy kaprysem skompilowałem przykład z Clangiem (a później z VS), otrzymałem inny wynik! Nie mogę …
W przykładowym kodzie poniżej otrzymuję następujący wyjątek db.Entry(a).Collection(x => x.S).IsModified = true: System.InvalidOperationException: „Instancja typu jednostki„ B ”nie może być śledzona, ponieważ inna instancja o wartości klucza„ {Id: 0} ”jest już śledzona. Podczas dołączania istniejących encji upewnij się, że dołączona jest tylko jedna instancja encji o danej wartości klucza. Dlaczego …
Natknąłem się na ten problem, próbując dodać impl Add<char> for Stringdo standardowej biblioteki. Ale możemy to łatwo powielić, bez operatora shenanigans. Zaczynamy od tego: trait MyAdd<Rhs> { fn add(self, rhs: Rhs) -> Self; } impl MyAdd<&str> for String { fn add(mut self, rhs: &str) -> Self { self.push_str(rhs); self } …
Mam następujący kod: template <typename TC> class C { struct S { template <typename TS> void fun() const {} }; void f(const S& s) { s.fun<int>(); } }; // Dummy main function int main() { return 0; } Kiedy buduję to z gcc 9.2 i clang (9.0), pojawia się błąd …
Natknąłem się na ten problem podczas próby specjalizacji tuple_size/ tuple_elementdla niestandardowej klasy w C ++ 17 dla powiązań strukturalnych. Poniższy kod kompiluje się w GCC, ale nie w clang (obie wersje trunk, patrz poniższy link). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using …
Wiem, że jest to dość powszechny temat, ale ponieważ typowy UB jest łatwy do znalezienia, do tej pory nie znalazłem tego wariantu. Tak więc próbuję formalnie wprowadzić obiekty Pixel, unikając rzeczywistej kopii danych. Czy to jest ważne? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v<Pixel>); …
Czy może int (*)[]być niekompletny? C 2018 6.2.5 1 mówi: W różnych punktach w jednostce tłumaczenia typ obiektu może być niekompletny (brak wystarczających informacji, aby określić rozmiar obiektów tego typu) lub kompletny (posiadający wystarczające informacje). Wydaje się więc, że jeśli znany jest rozmiar typu, typ jest kompletny. 6.2.6.1 28 określa, …
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.