Pytania otagowane jako c++11

Użyj tego znacznika do kodu, który musi zostać skompilowany jako C ++ 11 (nie używając żadnych funkcji wprowadzonych w C ++ 14 lub nowszej).

3
Wykonaj funkcję w szablonie funkcji tylko dla tych typów, dla których zdefiniowano funkcję
Mam szablon funkcji, który pobiera wiele różnych typów podczas wprowadzania. Spośród tych typów tylko jeden z nich ma getInt()funkcję. Dlatego chcę, aby kod uruchamiał funkcję tylko dla tego typu. Proszę zaproponować rozwiązanie. Dzięki #include <type_traits> #include <typeinfo> class X { public: int getInt(){ return 9; } }; class Y{ }; …

4
Czy wyjaśnienie swobodnego zamawiania jest błędne w preferencjach?
W dokumentacji std::memory_orderna cppreference.com jest przykład swobodnego zamawiania: Zrelaksowane zamawianie Oznaczone operacje atomowe memory_order_relaxednie są operacjami synchronizacji; nie narzucają kolejności między dostępami do pamięci jednocześnie. Gwarantują one tylko atomowość i spójność kolejności modyfikacji. Na przykład, gdy xiy początkowo wynoszą zero, // Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, std::memory_order_relaxed); …

1
Możliwy błąd kompilatora w MSVC
Poniższy kod kompiluje się z gcc i clang (i wieloma innymi kompilatorami C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} …
13 c++  c++11  visual-c++ 


2
Dlaczego zmienna wyliczana jest tutaj wartością?
Przykład: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Podczas kompilacji pojawia się następujący błąd: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' …


3
Jak dowiedzieć się, jakie funkcje wygenerował kompilator?
Wiem o funkcjach generowanych przez kompilator, regule trzech i regule pięciu. W scenariuszach rzeczywistych może nie być trywialne ustalenie, które z funkcji generowanych przez kompilator (konstruktory, operatory przypisania, destruktor) faktycznie zostały utworzone przez kompilator. Czy jest jakiś sposób, aby wyświetlić listę funkcji generowanych przez kompilator dla określonej klasy? Interesuje mnie …
11 c++  c++11 


2
Wezwanie do lambda jest dwuznaczne, pomimo wyraźnego podania typu zwrotu
Przeciążona funkcja powinna przyjmować oba funktory, biorąc pod uwagę, że typ lambda jest rozstrzygalny (można ją wyrzucić std::function(proszę poprawić mnie, jeśli się mylę). Pytanie brzmi: Dlaczego poniżej jest błąd kompilacji, mimo że jawnie jest to typ lambda zdefiniowany? ( [&]() -> Type {}) Pamiętaj, że dla mojego obecnego rozwiązania potrzebuję …


2
Odliczenie typów argumentów szablonu szablonu C ++
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 …

3
Czy nullptr można przekonwertować na uintptr_t? Różne kompilatory się nie zgadzają
Rozważ ten program: #include <cstdint> using my_time_t = uintptr_t; int main() { const my_time_t t = my_time_t(nullptr); } Nie udało się skompilować z msvc v19.24: <source>(5): error C2440: '<function-style-cast>': cannot convert from 'nullptr' to 'my_time_t' <source>(5): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to …
10 c++  c++11  gcc  visual-c++  clang 

3
Dlaczego nie jest wymagane używanie nazwy typu dla typów zależnych w następującym przypadku?
Czytałem o usuwaniu odwołania do typu tutaj . Daje następujący przykład: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); print_is_same<int, std::remove_reference<int>::type>(); // …

2
Czy mogę użyć niestandardowego alokatora dla std :: array dla bezpiecznych kluczy kryptograficznych?
Wiem, że std::arrayjest całkowicie przydzielony na stosie, ale to pytanie jest uzasadnione względami bezpieczeństwa, które wymagają dwóch rzeczy: Dane std::arrayzostaną zerowane lub losowo po zniszczeniu Dane std::arrayzostaną zablokowane , tak aby nigdy nie trafiały na dysk ani w przypadku awarii, ani w pamięci wymiany Zwykle std::vectorrozwiązaniem jest utworzenie niestandardowego programu …

1
Jak uzyskać liczbę elementów w std :: array <T, N> bez konieczności tworzenia instancji?
Jest std::array&lt;T, N&gt;::size(), ale jest niestatyczna, więc wymaga wystąpienia std::array. Czy istnieje sposób, aby uzyskać wartość powraca (który jest Nz std::array&lt;T, N&gt;) bez konieczności konstruowania instancji tablicy? Do normalnej tablicy mógłbym użyćsizeof , ale nie widzę żadnej gwarancji, że sizeof(std::array&lt;T, N&gt;) == N * sizeof(T)to prawda.
9 c++  arrays  c++11  sizeof 

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.