В C++20 гарантируются ли элементы кортежа, не являющиеся ссылками, вложенными в кортеж?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 В C++20 гарантируются ли элементы кортежа, не являющиеся ссылками, вложенными в кортеж?

Сообщение Anonymous »

Рассмотрим следующую функцию, которая возвращает смещение в байтах между I-м элементом кортежа и адресом кортежа:

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

template 
requires ( ( not std::is_reference_v ) && ... )
std::intptr_t tuple_elem_offset(const std::tuple& tuple)
{
const auto element_address = reinterpret_cast(&std::get(tuple));
const auto tuple_address = reinterpret_cast(&tuple);

return element_address - tuple_address;
}
Гарантируется ли, что возвращаемое значение всегда находится в диапазоне [0, sizeof(std::tuple))?Я понимаю, что кортежи обычно реализуются с использованием множественного наследования, и это подразумевает свойство вложенности внутри для всех нессылочных объектов, содержащихся в кортеже. Мой вопрос: обеспечивается ли это языком?

Подробнее здесь: https://stackoverflow.com/questions/791 ... hin-the-tu
Ответить

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

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

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

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

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