[[[__No_unique_address__]] применяется к вторым членам в этой проверке оптимизации хвостовой накладки в Libc ++ избыточнC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 [[[__No_unique_address__]] применяется к вторым членам в этой проверке оптимизации хвостовой накладки в Libc ++ избыточн

Сообщение Anonymous »

В реализации Libc ++ std :: weder есть этот вспомогательный шаблон переменной:

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

// This function returns whether the type `_Second` can be stuffed into the tail padding
// of the `_First` type if both of them are given `[[no_unique_address]]`.
template 
inline constexpr bool __fits_in_tail_padding = []() {
struct __x {
_LIBCPP_NO_UNIQUE_ADDRESS _First __first;
_LIBCPP_NO_UNIQUE_ADDRESS _Second __second;
};
return sizeof(__x) == sizeof(_First);
}();
< /code>
_LIBCPP_NO_UNIQUE_ADDRESS
определяется как:

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

#  if __has_cpp_attribute(msvc::no_unique_address)
// MSVC implements [[no_unique_address]] as a silent no-op currently.
// (If/when MSVC breaks its C++ ABI, it will be changed to work as intended.)
// However, MSVC implements [[msvc::no_unique_address]] which does what
// [[no_unique_address]] is supposed to do, in general.
#    define _LIBCPP_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
#  else
#    define _LIBCPP_NO_UNIQUE_ADDRESS [[__no_unique_address__]]
#  endif
< /code>
In my understanding, it is the __second
, которые могут быть вставлены в хвостовую прокладку __first , а не наоборот. В этом случае является ли _libcpp_no_unique_address к __second избыточному? Однако, поскольку __x уже будет иметь потенциально перекрывающие участники только с __first , помеченным как _libcpp_no_unique_address , это не будет считаться «Pod для цели», даже без _libcpp_no_unique_address .>

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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