Size: a a a

2020 July 13

Д

Дима in supapro.cxx
поэтому часто требуется такой хоткей
источник

TS

Till Schneider in supapro.cxx
Дима
поэтому часто требуется такой хоткей
Надо переписать, чтоб такой необходимости не было 🙃
источник

Д

Дима in supapro.cxx
подожду ответ на свой вопрос :)
источник

SG

Serg Gorelli in supapro.cxx
источник

SG

Serg Gorelli in supapro.cxx
может так?
источник

AK

Alexey Kuznetsov in supapro.cxx
Раз уж зашла речь про неймспейсы и использование unqualified имен типов подскажите у кого какие лучшие практики с nested namespaces.
Несколько раз сталкивался с такой проблемой:
// foo.h
namespace my { class foo; }

// bar.h
#include "foo.h"
namespace my::internal
{
 void bar( foo& ); // << unqualified name. По задумке автора это my::foo
}

// internal/foo.h
namespace my::internal { class foo; }

// baz.cpp
#include "internal/foo.h"
#include "bar.h" // << а вот тут у нас odr-violation и my::internal::bar( foo& ) теперь принимает my::internal::foo

Все прекрасно компилируется, вы получаете разные лэйауты в разных юнитах трансляции для имени foo и просто какуюто кашу в памяти в рантайме, дебажится это плохо, потому что детектится проблема неочевидно, особенно на больших кодовых базах, довольно неприятные баги.
Что делать в таком случае? Всегда использовать полные имена со всеми неймспейсами даже если они в родительском неймспейсе? Это плохо контроллировать, для компилятора это валидно, а переносить поддержку этого на человека и код ревью не выглядит как что-то надежное.
Не использовать nested namespaces?
источник

D

Danya in supapro.cxx
Побитый Кирпич
Ни в коем случае
Ну только если локально сделать, то почему нет
источник

D

Danya in supapro.cxx
Если автор знает что делает
источник

/

/bin/cat in supapro.cxx
https://pastebin.com/esLQUbtg
как лучше сделать запись в противоположном порядке байт?
источник

/

/bin/cat in supapro.cxx
т.е. шаблон для __builtin_bswap + sizeof(T)
источник

АК

Александр Караев... in supapro.cxx
/bin/cat
т.е. шаблон для __builtin_bswap + sizeof(T)
std::memcpy во временный буфер,
std::reverse для реверса буфера,
std::memcpy в нужное место

можно обойтись без временного буфера
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Александр Караев
std::memcpy во временный буфер,
std::reverse для реверса буфера,
std::memcpy в нужное место

можно обойтись без временного буфера
А зачем std::memcpy?
источник

АК

Александр Караев... in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
А зачем std::memcpy?
первый или второй?
источник

/

/bin/cat in supapro.cxx
это имеет какое-то значение?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Александр Караев
первый или второй?
Оба. Или через char* нельзя менять объект 🤔
источник

АК

Александр Караев... in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Оба. Или через char* нельзя менять объект 🤔
не уверен
источник

/

/bin/cat in supapro.cxx
можно сделать что-то такое?
#define swap(size, value) __builtin_bswap##size(value);
       swap(sizeof(value), value)
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
/bin/cat
можно сделать что-то такое?
#define swap(size, value) __builtin_bswap##size(value);
       swap(sizeof(value), value)
Можно, но ты для этого юзаешь интринсики и там только численные типы
источник

/

/bin/cat in supapro.cxx
это не проблема
источник

/

/bin/cat in supapro.cxx
template<typename T, class = typename std::enable_if<std::is_unsigned<T>::value>::type>
источник