🐙 Antony
это расширение GCC
Aidar
Igor
warning: ISO C++ forbids zero-size array 'c' [-Wpedantic]
Aidar
Igor
таки да, если убрать массив то sizeof == 1
Aidar
массивы поломались да
Aidar
а что это дает?
Aidar
опасно чем?
Igor
указателем проитерироваться по всем элементам массива не получится, он будет заканчиваться там же где начался
Aidar
там кстати видно что памяти выделяется 1 байт
Aidar
а логика указателей и sizeof как с 0 байт
Aidar
тоесть на 10 элементов массивы выделился 1 байт
Dmitry
улучшенная версия nonesuch https://wandbox.org/permlink/SNrH5HbwpG7t8gws
Dmitry
😂
Igor
Sergey
sizeof(YourMom) == 1.#INF0000
Aidar
да sizeof дает 0 да
Aidar
посмотри в асемблер
Aidar
Igor
...
Aidar
в первую строку
Igor
да-да
Aidar
Aidar
вот тот же код без массива
Крылатый
Aidar
да потомучто адесовать можно только байт
Dmitry
https://wandbox.org/permlink/KxolswSjyO9BoIi6
Dmitry
как заткнуть clang чтобы варнингом не квохал? gcc более сдержанный
Dmitry
ясно
Dmitry
https://wandbox.org/permlink/rzWAFs62SmNRahIy
Berkus
Berkus
тебе ж написано прямо в сообщении, как
Berkus
prog.cc:11:8: warning: private field 'c' is not used [-Wunused-private-field]
Крылатый
Чо нашёл http://quick-bench.com/
Крылатый
Может быть немного полезно.
Крылатый
ИМХО
Constantine
Я хочу, чтобы функция обязательно выполнила перед выходом некоторое действие, зависящее от параметров, и явно указать эти параметры
Constantine
Поскольку функция возвращает void, я придумал, что можно написать ее возврат auto и дальше вернуть фактический результат из лямбды
Constantine
Тогда если хотя бы один раз возврат был через лямбду на выходе, все остальные тоже обязаны быть такими же
Constantine
как это делается?
Arseny
А функция что в итоге должна возвращать?
Constantine
У меня она void возвращала, я за счет этого выкрутился
Evgenii
Constantine
На самом деле, в примере функция обязана на выходе инициализировать статическое поле
Arseny
ScopeExit не подходит?
Constantine
Параметр указывать обязательно
vladislav
а, ну я же накидывал boost scope exit
vladislav
я подумал тебе не подходит, как то ты сложно описываешь тз
vladislav
может легче написать псевдокод того, что ты хочешь и скинуть?
Arseny
А в него лямбду не передать?
Arseny
Ну и чем ScopeExit вроде того, что в folly не подходит?
Arseny
Про бустовский я просто ничего не знаю
Igor
return_code = SomePublicFunction() может Private?
ttldtor
да хоть наколенный
ttldtor
может static void SomePublicFunction(){ ?
Constantine
ttldtor
собсно, как и приватная
Constantine
Arseny
Я вот тоже пока не понял
Arseny
SCOPE_EXIT { return_code = SomeFunction(); };
Constantine
одна функция всего
vladislav
int some_func() {//...};
static int ret_code;
void foo ()
{
BOOST_SCOPE_EXIT_ALL(&ret_code)
{
ret_code = some_func();
};
//other job...
}
Igor
тебе нужно чтобы код был равен результату SomePrivate, а если она кинет - то условно -1 ?
Constantine
void SomeFunction() {
if (path1) { exit_code = 1; return; }
if (path2) { exit_code = 2; return; }
if (path3) { exit_code = 3; return; }
}
Constantine
мне нужно, чтобы было вот так
Igor
а
Constantine
и я обязан был перед return указать exit_code
vladislav
scope exit у тебя выполнится перед выходом из скоупа в котором указан
Igor
exit_code = [](){ if (path1) {return 1;} if (path2) {return 2;} }();
Arseny
Почему нельзя сделать функцию, всегда возвращает int и использовать ее внутри исходной?
Igor
ну э, либо две функции, либо лямбда, либо много раз =; return
Igor
либо если совсем хочется наркомании и сломать мозги читателю, тернарный оператор и запятые
Arseny
Две функции вроде логичный способ. Что в нем читерского?
Igor
нежелание засорять неймспейс одноразовыми функциями, я так понимаю
vladislav
мб добавить статический флаг и от него плясать?
Pepe 🐸
Начиная примерно с 2^2^17 быстрее вроде согласно Вики). То есть почти для всего другие методы будут применяться
Pepe 🐸
Только для очень больших чисел применяется. И я хочу для гпу написать но пока не понял как gmp увязать с этим