Переосмыслить приведение в C – невозможно принять адрес rvalueC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Переосмыслить приведение в C – невозможно принять адрес rvalue

Сообщение Anonymous »

У меня есть две структуры struct Temp и struct MyTemp с одинаковым расположением памяти, и я хочу привести возвращаемое значение типа struct Temp к типу struct MyTemp .
Например, в C++ я могу достичь этой цели в одной строке (без какой-либо временной переменной) следующим образом:

Код: Выделить всё

#include 

struct Temp {
int a;
int b;
};

struct MyTemp {
int a;
int b;
};

struct Temp get_temp(int a, int b) {
struct Temp temp = {
.a = a,
.b = b,
};
return temp;
}

int main() {
struct MyTemp mt = reinterpret_cast(std::move(get_temp(1, 2)));
}
Однако я не могу найти эквивалент на C, например, следующий код на C не компилируется:

Код: Выделить всё

struct Temp {
int a;
int b;
};

struct MyTemp {
int a;
int b;
};

struct Temp get_temp(int a, int b) {
struct Temp temp = {
.a = a,
.b = b,
};
return temp;
}

int main() {
struct MyTemp mt = *(struct MyTemp *)&get_temp(1, 2);
// error: cannot take the address of an rvalue of type 'struct Temp'
}
Итак, мой вопрос: есть ли способ сделать на C то же самое, что я сделал на C++? Если нет, то почему? И почему std::move может обойти эту проблему?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -an-rvalue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Переосмыслить приведение для указателя указателя
    Гость » » в форуме C++
    0 Ответы
    84 Просмотры
    Последнее сообщение Гость
  • Переосмыслить приведение для указателя указателя
    Anonymous » » в форуме C++
    0 Ответы
    102 Просмотры
    Последнее сообщение Anonymous
  • Переосмыслить приведение для указателя указателя
    Гость » » в форуме C++
    0 Ответы
    110 Просмотры
    Последнее сообщение Гость
  • Переосмыслить приведение для указателя указателя
    Гость » » в форуме C++
    0 Ответы
    72 Просмотры
    Последнее сообщение Гость
  • Переосмыслить приведение для указателя указателя
    Гость » » в форуме C++
    0 Ответы
    41 Просмотры
    Последнее сообщение Гость

Вернуться в «C++»