Berkus
это он для вас классический!
Sergey️
В функции делаю sizeof(type), но я так понимаю мне проще заранее найти size и отдать в функцию
Sergey️
по void* ты размер не узнаешь точно
не важно, мне просто принтануть
Vladislav
делай template <class T> void f(int a, T b) { size_t s = sizeof(T); }
Vladislav
не важно, мне просто принтануть
в смысле - совсем не узнаешь
Sergey️
sizeof возвращает size_t такю штуку можно же как аргумент функции сделать?
Processor
можно
Processor
size_t это тип данных
Vladislav
можно, это число
Processor
это имя сделали для удобства просто
Processor
по сути это int
🦥Alex Fails
неееее
🦥Alex Fails
это не инт
Processor
правда в С это был странный int
Anonymous
unsigned int
🦥Alex Fails
это любой БЕЗЗНАКОВЫЙ ТИП, в котором можно представить МАКСИМАЛЬНО АДРЕСУЕМЫЙ размер
Processor
вот точно
🦥Alex Fails
бля, слишком много капса
Sergey️
блин, всё же без полного куска кода не обойтись, начинаю нарываться на XY
🦥Alex Fails
го полный кусок)
Sergey️
https://gist.github.com/Kylmakalle/90b6b71b5a3ff6a605fba5a5d603b452 Короче, такая штука - выводит данные в машинном представлении (аля двоичный код). Мне нужна такая же функция только для различнх типов данных (достаточно сменить int в некоторх местах и тип данного TYPE), иии я не хочу плодить кучу функций для каждого типа данных где я буду менять две строчки, думал что-то универсальное, но не знаю как
Pavel
Шаблон сделай
Sergey️
ничё не умею
🦥Alex Fails
ух, какая черная битовая магия
🦥Alex Fails
а, прочитал описание того, что охота
Konstantin
Сделай такой шаблон: template<typename T> union ToBinary{ T t; std::array<uint8_t, sizeof(T)> }
Konstantin
Соответственно сможешь выводить любую вещь, линейно расположенную в памяти
🦥Alex Fails
ничё не умею
https://gist.github.com/leha-bot/93d0beb2639240a89aafdcdd978ef239
🦥Alex Fails
теперь когда ты напишешь binary_form(100001230510610LL) , компиль сделает по шаблону функцию с типом long long, который обычно имеет длину в 8 байт
Konstantin
А с выравниванием тут что?
Ну так надо было вывести так, как в памяти представлено А вообще, я эту фигню использую чтобы структуры по сети кидать между ++ сервисами
Berkus
может передавать структуру, может удалять данные на диске, как пойдет
Konstantin
Из-за чего?
Berkus
The C++11 standard says the following: “9.5 Unions [class.union] In a union, at most one of the non-static data members can be active at any time, that is, the value of at most one of the non-static data members can be stored in a union at any time.”
Pavel
Есть там что-нибудь про то что они в памяти лежат как попало? Ну или не как попало?
Pavel
the access to a union by a non-active member is defined and is defined to follow the object and value representation, access without one of the above interpositions is undefined behaviour. 
Pavel
Ну. У нас третий случай из того списка?
Berkus
ну окей
Pavel
Ну т.е. defined?
Berkus
ну тогда да
Anatoly
А если нашел неточность в текущей версии стандарта, куда это публикуется обычно? Например, 4 If a lambda-expression does not include a lambda-declarator, it is as if the lambda-declarator were (). The lambda return type is auto, which is replaced by the type specified by the trailing-return-type if provided and/or deduced from return statements as described in 10.1.7.4. [ Example: auto x1 = [](int i){ return i; }; // OK: return type is int auto x2 = []{ return { 1, 2 }; }; // error: deducing return type from braced-init-list int j; auto x3 = []()->auto&& { return j; }; // OK: return type is int& —end example ] содержит ошибку в примере в части int j; auto x3 = []()->auto&& { return j; }; // OK: return type is int&
Berkus
https://github.com/cplusplus/draft/ сюда
Anatoly
спасибо!
Berkus
проверь что там уже такого фикса нет в пулл-реквестах )
Anonymous
киньте ссылку на pro.* groups collection
Berkus
Berkus
плюсанул
Anonymous
там нету @prodot
Berkus
кек
Berkus
Rust compile time mandelbrot http://www.treblig.org/daveG/rust-mand.html
Александр
бинарник весит dahua?
Бинарника нет, там же ошибка компиляции
Berkus
бинарник весит dahua?
ну он получается фрактальный, так что весит всё свободное пространство на диске
Anatoly
плюсанул
закрыли, посчитав, что ошибки нет https://github.com/cplusplus/draft/pull/1749
Berkus
I think j should be interpreted as having namespace scope, so it needn't (and can't) be captured.
Anatoly
да
Berkus
надо написать им что в этом месте неплохо комментарий бы добавиь
Крылатый
Плюсую.
Berkus
написал им коммент в твоем ишуе
Berkus
переоткрой там если можешь
Berkus
пусть сделают чтонибудь уже
🐙 Antony
Так там же всё в порядке. глобальные переменные не надо явно захватывать
Ruslan
Никто не подскажет, как использовать structured bindings для boost::combine ? Boost 1.65.1, 7.2 gcc, и -std=c++17
Anatoly
Так там же всё в порядке. глобальные переменные не надо явно захватывать
да, только когда читаешь не ассоциируешь пример с глобальным скопом, но это, действительно, субъективно мое восприятие
Anonymous
а raise(11) это нормально?
Anonymous
контекст вопроса не ясен
🦥Alex Fails
типа кинуть сигнал SIGKILL
Anonymous
ну если автор кода больной, то почему бы и нет
Ned
А как внутри приложения перехватывать эти сигналы?