Pytania oznaczone «c++17»

17
Ciągłe wyliczanie C ++ 11

Czy istnieje sposób sprawdzenia w C ++ 11, czy wyliczenie jest ciągłe ? W pełni uzasadnione jest podawanie wartości wyliczeniowych, które nie są. Czy w C ++ 14, C ++ 17 jest jakaś cecha typu, a może C ++ 20, aby sprawdzić, czy wyliczanie jest ciągłe? Należy tego użyć w static_assert. Oto mały...

16
typ zwracany std :: pair <auto, auto>

Grałem około z autow std::pair. W poniższym kodzie funkcja fpowinna zwracać std::pairtypy zależne od parametru szablonu. Przykład roboczy: PRZYKŁAD 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return...

15
Jak kompilatory c ++ znajdują zmienną zewnętrzną?

Kompiluję ten program przez g ++ i clang ++. Jest różnica: g ++ drukuje 1, ale clang ++ drukuje 2. Wygląda na to, że g ++: zmienna zewnętrzna jest zdefiniowana w najkrótszym zakresie. clang ++: zmienna zewnętrzna jest zdefiniowana w najkrótszym globalnym zakresie. Czy specyfikacja C ++ ma...

14
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 =...

14
Przeciąż funkcję lambda

Jak przeciążyć prostą lokalną funkcję lambda? SSE oryginalnego problemu: #include <iostream> #include <map> void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx];...

13
Jak działa implementacja cull ntrptr?

Jestem ciekawy, jak nullptrdziała. Normy N4659 i N4849 mówią: musi mieć typ std::nullptr_t; nie możesz wziąć jego adresu; można go bezpośrednio przekonwertować na wskaźnik, a wskaźnik na element członkowski; sizeof(std::nullptr_t) == sizeof(void*); jego konwersja na booljest false; jego wartość...

13
Ambigious operator w gcc

Stworzyłem szablon funkcji do drukowania niektórych pojemników STL #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T,...