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.



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); …

2
jeśli constexpr z static_assert w lambda, który kompilator jest poprawny?
Kiedy chcemy używać static_assertw sposób if constexprmusimy warunek zależny od jakiegoś parametru szablonu. Co ciekawe, gcc i clang nie zgadzają się, gdy kod jest zawarty w lambda. Poniższy kod kompiluje się z gcc, ale clang wyzwala aser, nawet jeśli if constexprnie może to być prawda. #include <utility> template<typename T> constexpr …

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
Jak ustalić, które pliki nagłówkowe należy uwzględnić?
Powiedz, że mam poniższy (bardzo prosty) kod. #include <iostream> int main() { std::cout << std::stoi("12"); } Kompiluje to dobrze zarówno na g ++, jak i clang; jednak nie można go skompilować na MSVC z następującym błędem: błąd C2039: „stoi”: nie jest członkiem „std” błąd C3861: „stoi”: nie znaleziono identyfikatora Wiem, …
13 c++ 


1
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, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; } int main() …
13 c++  c++17 

1
Dlaczego te same nazwane zewnętrzne zmienne lokalne w różnych blokach mają różne powiązania między kompilatorami w c ++?
Podczas gdy właśnie sprawdzałem, które powiązania są przyznawane zewnętrznym zmiennym lokalnym , odkryłem, że niektóre kompilatory działają inaczej na przykład, jeśli testowałem poniżej kodu, jak widać w komentarzach, zmienne varmają różne powiązania // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; …
12 c++  g++  clang++  extern  linkage 


1
Czy `equality_comparable_with` wymaga wymagania` common_reference`?
Koncepcjaequality_­comparable_with<T, U> ma zadeklarować, że obiekty typu Ti Umożna porównać sobie równe, a jeśli są, to ma oczekiwaną znaczenie. W porządku. Jednak ta koncepcja również musi common_reference_t<T&, U&>istnieć. Głównym impulsem common_referencei towarzyszącą mu funkcją wydaje się być umożliwienie iteratorom proxy , aby mieć miejsce do reprezentowania relacji między takimi iteratorami …


2
Czy w czasie kompilacji można połączyć dwa łańcuchy typu `const char *`?
Oczywiście możemy połączyć dwie literały łańcuchowe w constexprfunkcji, ale co z konkatenacją literału łańcuchowego z łańcuchem zwróconym przez inną constexprfunkcję, jak w kodzie poniżej? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: return "2"; case 4: return "4"; case 8: …
12 c++  c++17 

1
C ++ 20 definicja poza klasą w klasie szablonów
Aż do standardu C ++ 20 C ++, gdy chcieliśmy zdefiniować operatora spoza klasy, który korzysta z niektórych prywatnych członków klasy szablonu, używamy konstrukcji podobnej do tej: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { public: constexpr …
12 c++  templates  c++20 

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.