Pytania otagowane jako c++17

C ++ 17 to nazwa standardu C ++ zatwierdzonego w 2017 roku. Opiera się on na poprzednim standardzie C ++ 14, ulepszając podstawowy język i standardową bibliotekę oraz dodając kilka nowych funkcji językowych.

1
Unqualified sort () - dlaczego kompiluje się, gdy jest używany na std :: vector, a nie na std :: array, i który kompilator jest poprawny?
Dzwoniąc std::sort()na std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Zarówno gcc, jak i clang zwracają błąd podczas sortowania w opcji std::array- mówi clang błąd: użycie niezadeklarowanego identyfikatora „sort”; miałeś na myśli …
11 c++  c++17 

1
Czy zmienną wbudowaną można zmienić po inicjalizacji w C ++ 17?
Mój scenariusz jest następujący (działał w clang, ale nie w gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Problem polega na tym, że zmienna wbudowana pokazywała 0 w miejscach, w których spodziewałem się 28, ponieważ była ona …
11 c++  visual-c++  dll  clang  c++17 

6
Niewinny zakres oparty na pętli nie działa
Nie można skompilować: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Wypróbuj na Godbolt Błąd kompilatora to: error: assignment of read-only reference 's' Teraz w moim przypadku lista składa się …

2
słaby reset zresetować wpływa na share_ptr?
Nie jestem przyzwyczajony do używania weak_ptri mam do czynienia z dość mylącą sytuacją. Używam aktualizacji Intel XE 2019 Composer 5 ( pakiet 2019.5.281 ) w połączeniu z Visual Studio 2019 ver. 16.2.5 . Kompiluję w wersji 64-bitowej. Używam standardowego C ++ 17 . Oto kod mojego rozwiązania szczytowego: #include <memory> …

3
Czy mogę używać std :: transform w miejscu z równoległą polityką wykonywania?
Jeśli się nie mylę, mogę wykonać std::transformdziałanie w miejscu , używając tego samego zakresu co iterator wejściowy i wyjściowy. Załóżmy, że mam jakiś std::vectorprzedmiot vec, a potem napiszę std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) przy użyciu odpowiedniej operacji jednoargumentowej unary_op. Korzystając ze standardu C ++ 17, chciałbym wykonać transformację równolegle, wstawiając std::execution::partam jako pierwszy argument. …

1
Problem w GCC / C ++ 17 z klasą szablonów szablonów
Rozważ 2 następujące przeciążenia template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Pierwszy działa dla klas regularnych, a drugi dla szablonów, które nie są tworzone. Na przykład: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields 0 Teraz rozważ następującą funkcję …
10 c++  templates  gcc  clang  c++17 



2
Kiedy potrzebny jest łańcuch zakończony zerem w scenariuszu tylko do odczytu?
Bawiłem się std::string_viewbiblioteką i zastanawiałem się nad zmianą bazy kodu, nad którą pracowałem std::string_viewtak często, jak to możliwe. Jednak w wielu wątkach, które przeczytałem na temat tego, kiedy i gdzie użyć std::string_viewzamiast const std::string &. Widziałem wiele odpowiedzi mówiących: „Kiedy nie potrzebujesz łańcucha zakończonego znakiem zerowym”. Kiedy zacząłem szukać w …

2
Jak uniknąć kopiowania podczas łączenia?
Tworzę klasę typu łańcuchowego, na przykład mały przykład poniżej. Wydaje się, że przy łączeniu funkcji składowych wywoływany jest konstruktor kopiowania. Czy istnieje sposób na pozbycie się wywołania konstruktora kopiowania? W moim poniższym przykładzie z zabawkami oczywiste jest, że mam do czynienia tylko z tymczasowymi, dlatego też „powinien” (może nie według …
10 c++  c++14  c++17 


2
Co gwarantuje C ++ std :: atomic na poziomie programisty?
Wysłuchałem i przeczytałem kilka artykułów, rozmów i pytań o przepełnienie stosu std::atomici chciałbym mieć pewność, że dobrze to zrozumiałem. Ponieważ nadal jestem trochę mylony z linią pamięci podręcznej zapisuje widoczność z powodu możliwych opóźnień w protokołach koherencji pamięci podręcznej MESI (lub pochodnych), buforach pamięci, unieważnianiu kolejek i tak dalej. Przeczytałem, …


2
Prawidłowa składnia wywołania pseudo-destruktora dla zmiennej swobodnej
Rozważ następujący program demonstracyjny. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Ten program jest kompilowany przez Microsoft Visual Studio Community 2019. Ale clangi gccpoproś o taki błąd prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ Jeśli napiszesz takie wyrażenie, ( 0.f …
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.