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.

1
Konwersja do void ** w różnych kompilatorach
Uruchomiłem następujący kod za pośrednictwem różnych kompilatorów: int main() { float **a; void **b; b = a; } Z tego co udało mi się zebrać, void **to nie ogólna wskazówka co oznacza, że każdy z innego wskaźnika konwersji nie powinien skompilować lub przynajmniej rzucić ostrzeżenie. Oto moje wyniki (wszystkie wykonane …
9 c++  c  cuda 

1
Przekazywanie wskaźnika funkcji z tablicy wskaźników funkcji jako argumentu szablonu
Chciałbym przekazać wskaźnik funkcji z tablicy wskaźników funkcji jako argument szablonu. Mój kod wydaje się kompilować przy użyciu MSVC, chociaż Intellisense narzeka, że ​​coś jest nie tak. Zarówno gcc, jak i clang nie mogą skompilować kodu. Rozważ następujący przykład: static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer …
9 c++  templates  c++14 

1
W jaki sposób shift_right () ma być zaimplementowany w C ++ 20?
W C ++ 20 <algorithm>nagłówek zyskuje dwa nowe algorytmy: shift_left()ishift_right() . Oba akceptują dowolny LegacyForwardIterator. W przypadku shift_left(), podano, że „ruchy są wykonywane w rosnącej kolejności ipoczynając od ​0”; dla shift_right(), określono, że „jeżeli ForwardItspełnia wymagania LegacyBidirectionalIterator, a następnie przemieszcza wykonywane są w kolejności malejącej ipocząwszy od last - first …

1
niespójność clang / gcc w specjalizacji klasowej
Natknąłem się na ten problem podczas próby specjalizacji tuple_size/ tuple_elementdla niestandardowej klasy w C ++ 17 dla powiązań strukturalnych. Poniższy kod kompiluje się w GCC, ale nie w clang (obie wersje trunk, patrz poniższy link). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using …

3
unique_ptr <0 LUB co robi mniej niż operator?
Mam do czynienia z kodem, który nie został napisany przeze mnie. Mam to oświadczenie: // p is type of std::unique_ptr&lt;uint8_t[]&gt; if (p &lt; 0) { /* throw an exception */ } Co więc p &lt; 0oznacza w tym kontekście? Na stronie z dokumentacją uważam, że mój przypadek dotyczy tego 16) …

2
Wariacja na temat typowania znaków: trywialna konstrukcja na miejscu
Wiem, że jest to dość powszechny temat, ale ponieważ typowy UB jest łatwy do znalezienia, do tej pory nie znalazłem tego wariantu. Tak więc próbuję formalnie wprowadzić obiekty Pixel, unikając rzeczywistej kopii danych. Czy to jest ważne? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v&lt;Pixel&gt;); …


1
Czy nowy (this) ThisClass () to zły pomysł?
class FooView final : public Something { ... void refresh() { this-&gt;~FooView(); new (this) FooView(); } } Nigdy nie widziałem tego idiomu i wydaje się, że może być bardzo subtelny i nieuporządkowany, ale tak naprawdę nie mogę wymyślić z nim problemu (dopóki FooViewjest ostateczny). Czy to zły pomysł?




1
Czy można dodać zero do wskaźnika zerowego?
Wiem, że arytmetyka wskaźników jest niedozwolona dla wskaźników zerowych. Ale wyobraź sobie, że mam coś takiego: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin() const { …

1
Próbowanie zrozumienia szablonów i wyszukiwania nazw
Próbuję zrozumieć następujące fragmenty kodu Fragment nr 1 template &lt;typename T&gt; struct A { static constexpr int VB = T::VD; }; struct B : A&lt;B&gt; { }; Ani gcc9, ani clang9 nie generują tutaj błędu. P: Dlaczego ten kod się kompiluje? Czy nie A&lt;B&gt;dziedziczymy podczas dziedziczenia po B? W B …

1
Właściwy sposób na zwrócenie wskaźnika do obiektu `new` z funkcji Rcpp
Rozważ 1) klasę niestandardową z potencjalnie dużym drukiem pamięci oraz 2) funkcję najwyższego poziomu, która wykonuje wstępne przetwarzanie, a następnie tworzy i zwraca nowy obiekt naszej klasy niestandardowej. Aby uniknąć niepotrzebnego kopiowania według wartości, funkcja przydziela obiekt i zwraca do niego wskaźnik. Na podstawie poprzedniej dyskusji wydaje się, że właściwym …
9 c++  r  rcpp 

1
Jaki jest odpowiednik MSVC dla -fno-char8_t?
W C ++ 20 u8literałów łańcuchowych jest opartych na char8_ttypie. Celowo nie przechodzą już na char const*: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Oczywiście ostatecznym celem migracji do C ++ 20 jest całkowite przejście na nowe zachowanie (w powyższym przykładzie: zmiana typu str). Jednak …

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.