Описание тега reinterpret-cast

Оператор C++, который просто позволяет преобразование между типами путем переинтерпретации базового битового шаблона. В общем случае это означает, что указатель должен быть преобразован в любой другой тип указателя, а также может позволить преобразование целочисленного типа в любой тип указателя и наоборот.
1 ответ

Используя typename с reinterpret_cast()

Как создать имя типа, которое является результатом reinterpret_cast? Например, template<typename T1> class node{ public: using null_sp2node = typename reinterpret_cast<shared_ptr<node<T1>>>(NULL); }; Выше генерируется следующ…
05 фев '18 в 00:26
5 ответов

Приведение между двумя шаблонно-шаблонными классами с использованием общих указателей

У меня есть класс из библиотеки, например так: template <typename T> class TypedClass { public: typedef typename boost::shared_ptr<TypedClass<T> > Ptr; T m_data; T* m_pointer_data; }; Предполагая, что я согласен с тем, что int и fl…
2 ответа

Может кто-нибудь объяснить эту строку кода C++, используя reinterpret_cast?

Рассмотрим (1): uint8_t *pUART = reinterpret_cast<uint8_t*>(0x0800); Я знаю (1) просто меняет указатель pUART на 0x0800, но я запутался, как это работает. Это имело бы смысл, если бы это было (2): uint8_t* pUART = reinterpret_cast<uint8_t*&…
26 апр '18 в 07:52
10 ответов

Почему этот reinterpret_cast не компилируется?

Я это понимаю reinterpret_cast опасно, я просто делаю это, чтобы проверить это. У меня есть следующий код: int x = 0; double y = reinterpret_cast<double>(x); Когда я пытаюсь скомпилировать программу, выдает ошибку недопустимое приведение типа …
05 фев '10 в 06:10
1 ответ

C++ приведение без подписи к подписи

Я пытался повторить это, но это не скомпилируется. unsigned char x = 0; reinterpret_cast<signed char>(x); Это говорит C:\Users\SXG5558\Documents\Arduino\sketch_jun30a\sketch_jun30a.ino: In function 'void setup()': sketch_jun30a:3: error: inval…
30 июн '16 в 21:21
0 ответов

std::андер в сочетании с reinterpret_cast

Отвечая на вопрос " Диапазон, основанный на цикле для распределенных массивов кучи ", сегодня я наткнулся на предложение использовать reinterpret_cast привести от типа указателя к типу массива, используя std::launder (После некоторого обсуждения мы …
27 авг '18 в 12:55
1 ответ

Что означает примечание ниже в [expr.reinterpret.cast]/6?

http://eel.is/c++draft/expr.reinterpret.cast#6: Указатель на функцию может быть явно преобразован в указатель на функцию другого типа. [ Примечание: эффект вызова функции через указатель на тип функции ([dcl.fct]), который отличается от типа, испол…
1 ответ

Поведение reintepret_cast указателей CUDA?

Учитывая следующую функцию хоста: uint64_t * SomeDevPtr =... /* Where SomeDevPtr is a pointer pointed to some device memory address allocated by cudaMalloc(); */ uint32_t * SomeDevIntPtr = reintepret_cast<uint32_t *>(SomeDevPtr); Из-за функции…
18 фев '14 в 03:52
2 ответа

reinterpret_cast вектор указателей на вектор указателей на базовый класс

Рассмотрим следующий фрагмент кода #include <algorithm> #include <iostream> #include <memory> #include <vector> struct Base { int x; Base(int x) : x(x) {} }; struct Derived : public Base { int y, z; Derived(int x) : Base(x), …
23 июл '16 в 06:59
0 ответов

Переинтерпретация C++ противоречива

Я сделал тестовую программу: #include <iostream> using namespace std; class Bug { private: char a[25]; int& view (int i) { return *reinterpret_cast<int*>(&a[i]);} public: Bug () {} void overwrite () { view(a[0]) = 2; cout <&lt…
17 окт '14 в 20:53
1 ответ

Ошибка C2440: 'reinterpret_cast': невозможно преобразовать из 'перегруженной функции' в 'StateFunc'

Код взят из проекта конечного автомата статьи DDJ в c class EventData { public: virtual ~EventData() {}; }; struct StateStruct; class CStateMachine : public CObject { DECLARE_DYNAMIC(CStateMachine) public: CStateMachine(int nMaxStates); virtual ~CSt…
02 дек '12 в 11:39
0 ответов

Вектор реинтерпретировать литой ARM Neon

У меня есть векторный регистр ARM NEON uint32x4_t. Я хочу "перемешать" эти 4 uint32_t с vtbx2 и vext Интерфейс для ожиданий поиска в таблице uint8x8_t, Это представляется возможным с помощью приведения, особенно потому, что в документации говорится,…
20 фев '17 в 17:39
4 ответа

Хранится ли std::complex с чередованием?

То есть на диске, если у меня есть массив std::complexэто хранится RIRIRIRI или же RRRRIIII или что-то другое? Мой реальный вопрос - если у меня есть определенная мной структура, которая содержит два числа, могу ли я сделать реинтерпретацию приведен…
15 мар '11 в 20:41
4 ответа

Является ли реинтерпретация указателя на функцию-член "хорошей идеей"?

У меня есть рабочий поток, который содержит список "Действия потока" и работает через них как когда. template <class T> class ThreadAction { public: typedef void (T::*action)(); ThreadAction(T* t, action f) : func(f),obj(t) {} void operator()(…
0 ответов

Передайте float в качестве параметра шаблона (bis)

Как и прежде, я пытаюсь "эмулировать" параметры шаблона с плавающей запятой на основе его записи IEEE754 благодаря reinterpret_cast. Я использую компилятор MSVC 2005 (он не поддерживает C++11). Вот код: #include <iostream> #ifdef _MSC_VER type…
08 апр '14 в 09:11
1 ответ

Порядок выполнения зависимостей в модуле Boost Unit Test Framework

Я пытаюсь установить зависимости в платформе Boost Unit Testing Framework. Я обнаружил, что этот поток tbat имеет пример того, как использовать метод test_unit::depen_on(). Пока все хорошо, я могу написать магию вокруг этого, чтобы сгладить это. Одн…
2 ответа

Почему reinterpret_cast не работает, пока работает memcpy?

Я пишу код сокета и, основываясь на некоторых параметрах, использую IPv4 или IPv6. Для этого у меня есть такой код: struct sockaddr final_addr; ... struct sockaddr_in6 addr6; ... memcpy(&final_addr, &addr6, size); ... bind(fd, &final_add…
06 окт '16 в 17:07
0 ответов

Проверка расположения памяти указателя во время компиляции: сбой объединения в constexpr

Рассмотрим следующий код: // Preamble #include <limits> #include <iostream> #include <type_traits> // Gives an unsigned int of the given size in bytes, if it exists template <std::size_t N> struct uint_of_sizeof { using type …
22 июл '18 в 20:24
2 ответа

Является ли reinterpret_cast плохим при работе с низкоуровневой манипуляцией байтами?

Я пишу сервер веб-сокетов, и мне приходится иметь дело с замаскированными данными, которые мне нужно разоблачить. Маска имеет тип unsigned char[4], а данные также являются буфером без знака char*. Я не хочу XOR байт за байтом, я бы предпочел XOR 4 б…
30 дек '12 в 23:17
3 ответа

Почему здесь используется void**?

Код забрать с v8-0.2.5 /** * Checks whether two handles are the same. * Returns true if both are empty, or if the objects * to which they refer are identical. * The handles' references are not checked. */ template <class S> bool operator==(Han…
07 янв '17 в 12:42