Pytania otagowane jako c++

C ++ jest językiem programowania ogólnego przeznaczenia. Został pierwotnie zaprojektowany jako rozszerzenie do C i ma podobną składnię, ale teraz jest to zupełnie inny język. Ten znacznik służy do pytań o kod (kompilowany) za pomocą kompilatora C ++. Użyj tagu specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardową [C ++ 11], [C ++ 14], [C ++ 17] lub [C ++ 20] itp.

1
Clang nie kompiluje kodu, ale skompilowały go gcc i msvc
Nie rozumiem, na czym polega problem: ani w moim kodzie, ani w kompilatorze (mniej możliwe). Jest taki kod: #include <iostream> #include <type_traits> #include <set> template<typename T, typename = void> struct TestA: std::false_type {}; template<typename T> struct TestA<T, std::void_t<typename T::reverse_iterator>> : std::true_type {}; template<typename T> struct TestA<T, std::void_t<typename T::dummy_iterator>> : std::true_type …

2
Jak wektor jako klucz działa wewnętrznie w C ++?
Ta odpowiedź SO mówi, że mapa STL z wektorem dla klucza wektor może być używany jako klucz. Więc kiedy używamy wektora jako klucza. Jak to faktycznie działa, skoro klucz musi być unikalny, więc kiedy wstawimy inny wektor z tymi samymi elementami, czy mapsprawdzanie duplikatu elementu po elemencie lub nazwa wektora …
14 c++  arrays  dictionary  vector  stl 


1
Czy mogę zainicjować listę std :: vector z doskonałym przekazywaniem elementów?
Zauważyłem, że zbiorczą listę initalization std :: vector wykonuje skopiować inicjalizacji gdy ruch jest bardziej dotyczy. W tym samym czasie wiele lokacebacków robi to, co chcę. Mogłem tylko wymyślić to niedoskonałe rozwiązanie pisania funkcji szablonu init_emplace_vector. Jest to jednak optymalne tylko dla nieprecyzyjnych konstruktorów pojedynczej wartości . template <typename T, …


1
Dlaczego optymalizacja pustej bazy jest zabroniona, skoro pusta klasa podstawowa jest również zmienną składową?
Optymalizacja pustej bazy jest świetna. Obejmuje jednak następujące ograniczenie: Optymalizacja pustej bazy jest zabroniona, jeśli jedna z pustych klas bazowych jest również typem lub bazą typu pierwszego niestatycznego elementu danych, ponieważ dwa podstawowe podobiekty tego samego typu muszą mieć różne adresy w reprezentacji obiektu najbardziej pochodnego typu. Aby wyjaśnić to …


2
Jak działa rzucanie i łapanie ints?
Z tym kodem: int main() { try { throw -1; } catch (int& x) { std::cerr << "We caught an int exception with value: " << x << std::endl; } std::cout << "Continuing on our merry way." << std::endl; return 0; } Mamy: /tmp$ ./prorgam.out Continuing on our merry way …

1
Czy to błąd w std :: gcd?
Natknąłem się na takie zachowanie, std::gcdktóre okazało się nieoczekiwane: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a << …

1
if constexpr - dlaczego odrzucona instrukcja jest w pełni sprawdzana?
W GCC 10 bawiłem się konstelacją c ++ 20 i napisałem ten kod #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t> find_if_impl(Predicate&& pred, Tuple&& t) noexcept { constexpr std::size_t I = std::tuple_size_v<std::decay_t<decltype(t)>> - N; if constexpr (N == 0u) { return std::nullopt; } …

2
czy konstruktorzy kopiują i przenoszą się automatycznie?
Możemy uzyskać dostęp do zmiennych prywatnych innej klasy, gdy definiujemy konstruktory kopiujące lub przenoszące. Czy C ++ tworzy je friendautomatycznie? Na przykład: my_str::my_str(my_str&& m) { size_ = m.size_; //accessing private variable another my_str class buff_ = m.buff_; //accessing private variable another my_str class m.buff_ = nullptr; m.size_ = 0; }
14 c++  friend-class 


2
Dlaczego nie możemy tworzyć obiektów łatwych do zbudowania za pomocą malloc, jeśli prosty domyślny konstruktor nie wykonuje żadnej akcji?
Mam trudności ze zrozumieniem poniższego akapitu cytowanego z cpreferencji na temat trywialnego domyślnego konstruktora. Przeszukałem stackoverflow, ale nadal nie otrzymałem jasnej odpowiedzi. Więc proszę o pomoc. Trywialny domyślny konstruktor to konstruktor, który nie wykonuje żadnej akcji. Wszystkie typy danych kompatybilne z językiem C (typy POD) są trywialnie domyślne. W przeciwieństwie …

3
Dlaczego wymiar tablicy jest częścią tego typu?
Czytając książkę C ++ Primer natrafiłem na następujące stwierdzenie: „Liczba elementów w tablicy jest częścią typu tablicy”. Więc chciałem dowiedzieć się, używając następującego kodu: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c std::cout<<typeid(Array2).name()<<std::endl; //prints A6_c return 0; } Co …
14 c++  arrays  c++11 

2
Czy GCC9 unika bezwartościowego stanu std :: variant jest dozwolone?
Niedawno śledziłem dyskusję na temat Reddit, która doprowadziła do miłego porównania std::visitoptymalizacji między kompilatorami. Zauważyłem, co następuje: https://godbolt.org/z/D2Q5ED Zarówno GCC9, jak i Clang9 (myślę, że współużytkują ten sam stdlib) nie generują kodu do sprawdzania i zgłaszania wyjątku bezwartościowego, gdy wszystkie typy spełniają określone warunki. To prowadzi do znacznie lepszego codegen, …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.