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.

3
c ++ Wątki wewnątrz do drukowania w pętli niepoprawne wartości
Próbuję zrozumieć wielowątkowość w c ++, ale utknąłem w tym problemie: jeśli uruchomię wątki w pętli for, wypiszą one nieprawidłowe wartości. To jest kod: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int i=0; i<n; i++ …




2
Dlaczego koncepcja same_as sprawdza dwukrotnie równość typu?
Patrząc na możliwą implementację koncepcji same_as na https://en.cppreference.com/w/cpp/concepts/same_as zauważyłem, że dzieje się coś dziwnego. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; Pierwsze pytanie brzmi: dlaczego SameHelperkoncepcja jest potrzebna? …
19 c++  c++20  concept 


5
Jak rozwiązać zwisający const ref
Poniższy krótki program #include <vector> #include <iostream> std::vector<int> someNums() { return {3, 5, 7, 11}; } class Woop { public: Woop(const std::vector<int>& nums) : numbers(nums) {} void report() { for (int i : numbers) std::cout << i << ' '; std::cout << '\n'; } private: const std::vector<int>& numbers; }; int …
18 c++ 

3
Wartości wartości zamknięcia lambda można przekazać jako parametry referencyjne wartości
Odkryłem, że lvaluezamknięcia lambda zawsze można przekazać jako rvalueparametry funkcji. Zobacz następującą prostą demonstrację. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function …


4
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 …
17 c++  c++11  c++14  c++17  c++20 


1
Dlaczego standard C ++ obsługuje wyszukiwanie plików w taki sposób?
C ++ używa tego streamofftypu do reprezentowania przesunięcia w strumieniu (pliku) i jest zdefiniowany w następujący sposób w [stream.types]: using streamoff = implementation-defined ; Typ streamoff jest synonimem jednego z podpisanych podstawowych integralnych typów o wystarczającym rozmiarze, aby reprezentować maksymalny możliwy rozmiar pliku dla systemu operacyjnego. 287) 287) Zazwyczaj długi. …


4
Dlaczego std :: function nie uczestniczy w rozwiązywaniu problemów z przeciążeniem?
Wiem, że następujący kod nie zostanie skompilowany. void baz(int i) { } void baz() { } class Bar { std::function<void()> bazFn; public: Bar(std::function<void()> fun = baz) : bazFn(fun){} }; int main(int argc, char **argv) { Bar b; return 0; } Ponieważ std::functionmówi się, że nie należy rozważać rozdzielczości przeciążenia, jak …

2
Czy to stary konstruktor w stylu C ++?
Oto kawałek kodu C ++. W tym przykładzie wiele bloków kodu wygląda jak wywołania konstruktora. Niestety, kod blokowy nr 3 nie jest (możesz to sprawdzić za pomocą https://godbolt.org/z/q3rsxn i https://cppinsights.io ). Myślę, że jest to stara notacja C ++, która mogłaby wyjaśnić wprowadzenie nowej notacji konstrukcyjnej C ++ 11 za …
17 c++  c++11 

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.