Berkus
Ну webasm в Си, очевидно, тоже есть. Как там вообще rust? Сплошное удовольствие после С++?
вебасм может и есть, но скомпилить си в вебасм и запустить одной командой без кучи ебли боюсь мало реально
Berkus
Ну webasm в Си, очевидно, тоже есть. Как там вообще rust? Сплошное удовольствие после С++?
ну у него есть свои сложности, объектная модель очень сильно своеобразная
Vladimir
сделай это на сишечке, буду топить за сишечку: λ cargo web start --target-webasm
А в сишке нет чтоле емскриптена? Или я не понял посыл
Andrei
А в сишке нет чтоле емскриптена? Или я не понял посыл
Я тоже не понял, чем людей эмскриптен не устроил.
Berkus
к тому же раст отошел от емскриптена сейчас, это легаси тулчейн
Andrei
А.
Andrei
Беркус, что-то от тебя последнее время одни растаманские посты, ты сменил веру?
Vladimir
к тому же раст отошел от емскриптена сейчас, это легаси тулчейн
Отошёл, но исходный клиент был про "сделать так"
Vladimir
Напиши мейкфайл или что у сиплюсплюсеров принято, и юзай
Berkus
Напиши мейкфайл или что у сиплюсплюсеров принято, и юзай
еще раз прочитай пожалуйста - одной командой подтянуть все депенденсы, собрать и запустить в браузере
Berkus
наверное на мейкфайле можно нагородить такое, но чот я ссыкую
Vladimir
Да блин, я растоман, для меня это привычно.
Nikita
О это чатик о расте?
Vladimir
писать мейкфайлы?
Не писать мнйкфайлы
Berkus
Не писать мнйкфайлы
тогда я совсем не понял чего ты от меня хочешь
Vladimir
Чтоб ты довольствовался богоподобными плюсами
Vladimir
Вон даже Раст переписали на си++
Vladimir
https://www.reddit.com/r/rust/comments/7lu6di/mrustc_alternate_rust_compiler_in_c_now_broken/
Anonymous
Привет всем. Можете посоветовать какие-нибудь либы для работы с изображениями?
Berkus
https://www.reddit.com/r/rust/comments/7lu6di/mrustc_alternate_rust_compiler_in_c_now_broken/
я знаю этого чувака, он немного упорот на осдеве, поэтому это больше эксперимент в стиле cppgm только rustgm
Anonymous
а что-нибудь поменьше есть? Мне бы просто с пикселями работать, а-ля битмапы из SDL
Anonymous
да не знаю, не пробовал
Roman
да не знаю, не пробовал
C++ , картинки открывать можно, работать как с битмапами. Вроде по описанию то что вам нужно
Anonymous
Хорошо, спасибо, гляну
Berkus
а что-нибудь поменьше есть? Мне бы просто с пикселями работать, а-ля битмапы из SDL
c пикселями тебе пойдет просто cimg (хедер онли либа для загрузки) и обычный массив
Egor
Дамы и господа, я не понимаю, что происходит с перегрузкой в этом примере: https://godbolt.org/g/t92L7f Заинклудили math.h, реализовали свой double pow(double a, int b) и внезапно получили, что pow(2, 10) на gcc/clang/icc вызывает какой-то библиотечный pow, а вот на вижаке - наш собственный. При этом ни у кого ошибок компиляции (или какого-нибудь ambiguous) не возникает. Как так получилось? Если, например, убрать math.h и добавить свой pow(double, double), то вызывается pow(double, int)
Roman
видимо кто-то реализовал pow(int, int)?
Да, у меня ровно это и происходит
Egor
Да, у меня ровно это и происходит
А как определили, какая перегрузка вызывается?
Roman
Запустил!
Roman
step in
Evgenii
step in
magic
Egor
Ах да, дебаггер. Прикольно. А откуда там вообще pow(int, int) взялся?
Roman
там template<T1, T2> pow
Egor
Потрясающе. И как оно, интересно, работает?
Roman
When a template function and a non-template function are both viable for resolving a function call, the non-template function is selected.
Cuno
SFNAE же, судя по асм листингу.
Roman
т.е. если ты напишешь нешаблонный pow(int, int) то он получает приоритет, и это не ambigous
Cuno
_ZSt3powIiiEN9__gnu_cxx11__promote_2IT_T0_NS0_9__promoteIS2_Xsr3std12__is_integerIS2_EE7__valueEE6__typeENS4_IS3_Xsr3std12__is_integerIS3_EE7__valueEE6__typeEE6__typeES2_S3_ > is_integer is_integer
Egor
Nice, всем спасибо. А может кто-нибудь ещё и знает, как должна себя вести шаблонная pow? Ну вряд ли же она вообще любые типы умеет возводить в степень
Roman
SFINAE
Roman
enable_if можно возводить
Egor
В смысле? pow умеет не только какие-то числа в степень возводить?
Berkus
можно строку в степень возвести)
Egor
Ну, такое. http://en.cppreference.com/w/cpp/numeric/math/pow — нашёл ответ на свой вопрос тут
Egor
> A set of overloads or a function template for all combinations of arguments of arithmetic type not covered by 1-3). If any argument has integral type, it is cast to double. If any argument is long double, then the return type Promoted is also long double, otherwise the return type is always double.
Roman
Вообще в C++11 благодаря decltype в типе возвращаемого значения можно все такие перегрузки заменить одним шаблоном
Roman
Кто-нибудь знает зачем такое могли сделать? : https://eda-playground.readthedocs.io/en/latest/_static/systemc-2.3.1/sysc/a00345_source.html // token concatenation #define SC_CONCAT_HELPER_( a, b ) \ SC_CONCAT_HELPER_DEFERRED_( a, b ) #define SC_CONCAT_HELPER_DEFERRED_( a, b ) \ SC_CONCAT_HELPER_MORE_DEFERRED_( a,b ) #define SC_CONCAT_HELPER_MORE_DEFERRED_( a, b ) \ a ## b
Evgenii
чтобы скучно не было?
Roman
Нет, это как бы продуктовый код, IEEE стандарт
Egor
Кажется, это какая-то магия и костыли, чтобы если мы подставляем макрос в макрос, то чтобы он то ли развернулся, то ли чтобы не развернулся
Roman
может быть a ## b ## c не работает иначе? (просто предположение)
Roman
Нет, используют этот SC_CONCAT_HELPER_ именно вместо ##
Egor
Да, это нормально, потому что иначе что-то может лишний раз развернуться или не развернуться
Roman
А да, понял
Roman
std::cout « SC_STRINGIFY_HELPER_(SC_CONCAT_HELPER_(SC_CONCAT_HELPER_(a,b),c));
Roman
Если не вкладывать, а сделать: #define SC_STRINGIFY_HELPER_( Arg ) \ #Arg #define SC_CONCAT_HELPER_( a, b ) \ a ## b то результат будет плачевный
Roman
» SC_CONCAT_HELPER_(SC_CONCAT_HELPER_(a,b),c) вместо abc
Egor
Ну да
Egor
https://ideone.com/Z83ohf
Berkus
я когда-то находил почему такое правило, но сейчас лень повторно искать
Berkus
ищи token pasting или что-то подобное в препроцессоре
Thorn
обычно препроцессор пытается подставлять макросы рекурсивно, пока может, но к аргументам # и ## macro expansion не применяется
Arseny
Хм. Я помнию что для #define CONCAT нужен был второй вложенный макрос чтобы все развернулось. Зачем третий я не до конца понимаю.
Arseny
Ну вот а в примере выше зачем-то двойная вложенность для конкатенации
Igor
https://akrzemi1.wordpress.com/2016/02/27/another-polymorphism/ TIL variant<> это не только поумневший union, но и интересный инструмент для статического полиморфизма а какие ещё юзкейсы для variant встречаются на практике, кроме функционального Result<OkType, ErrorType>?
Дмитрий ⬡
https://akrzemi1.wordpress.com/2016/02/27/another-polymorphism/ TIL variant<> это не только поумневший union, но и интересный инструмент для статического полиморфизма а какие ещё юзкейсы для variant встречаются на практике, кроме функционального Result<OkType, ErrorType>?
Ну вообще variant это тип-сумма, которую можно юзать просто постоянно. Но вот до уровня функциональных языков ещё надо что-то накрутить (именованные варианты, лёгкий паттерн матчинг).
Anonymous
Приветствую.
Anonymous
Вопрос небольшой есть, стоит ли начинать учить .net, а потом уже перейти на C++?
Олександр
Логика?