Evgenii
Ivan
может он в Си компилирует, там нет параметров по умолчанию
Ivan
ну да, так и есть
Pavel
void Data2Buffer(char* macro, int v1, int v2, int v3, int v4, int v5, char* str, int send) {
Передавай структурой, а все параметры полями, и фугкцию сделай для ее заполнения по умолчания, вызвал функцию, заполнилось по умолчанию, потом заполняй своими значения нужные поля
Крылатый
Вакансии к @AlexFails
Крылатый
Читайте аравила чата
Rustam
хорошо, прочту, это не совсем вакансия, скорее проект)
Viacheslav
не, низя, он в середине иерархии наследований
Не совсем понимаю, как это на иерархию наследования влияет. Я понимаю это примерно так. Было: https://ideone.com/2tbKOV Стало: https://ideone.com/RT50wS Дочерние классы видят ведь то же самое, что и было.
gboost
По константой ссылке простые типы данных не передаёте?
gboost
разве что rvalue
Почему нет?
Evgenii
gboost
зачем?
Экономия
Evgenii
gboost
чего
Памяти
Evgenii
Evgenii
Памяти
регистры на что придумали?
gboost
регистры на что придумали?
Какую книгу можешь посоветовать для разбора?
Evgenii
Какую книгу можешь посоветовать для разбора?
хз, чинить по асму и устройству компа
Evgenii
обычно этому в универе учат
gboost
У меня пробел 2 года. Не помню
Pavel
регистры на что придумали?
Зря ты так, не оптимизированный llvm вроде как больше выделяет))))
Pavel
void test_1(const int& test) { } void test_2(int test) { } int main() { int a = 1; test_1(a); test_2(a); } Тест
Pavel
; Function Attrs: noinline nounwind define void @_Z6test_1RKi(i32* dereferenceable(4) %test) #0 { %test.addr = alloca i32*, align 8 store i32* %test, i32** %test.addr, align 8 ret void } ; Function Attrs: noinline nounwind define void @_Z6test_2i(i32 %test) #0 { %test.addr = alloca i32, align 4 store i32 %test, i32* %test.addr, align 4 ret void } ; Function Attrs: noinline norecurse nounwind define i32 @main() #1 { %a = alloca i32, align 4 store i32 1, i32* %a, align 4 call void @_Z6test_1RKi(i32* dereferenceable(4) %a) %1 = load i32, i32* %a, align 4 call void @_Z6test_2i(i32 %1) ret i32 0 } Байткод
Evgenii
Зря ты так, не оптимизированный llvm вроде как больше выделяет))))
ага, а если руками в асм переводить, вообще страх
Pavel
4 байта на стеке съэкономили
Pavel
ага, а если руками в асм переводить, вообще страх
Каждый раз когда я видел в коде подобные оптимизации, где нить дальше был полный ужас
Evgenii
4 байта на стеке съэкономили
вау, это же 3е-9% моей оперативки
Ivan
https://godbolt.org/g/8Wo1BH вообще одинаково gcc7.1
Evgenii
3*10^(-9%)?
аж задумался
gboost
Так в современных компиляторах оптимизатор к ссылке приводит аргумент функции?
Ivan
У меня пробел 2 года. Не помню
https://godbolt.org/g/ecpn2A а вот когда будешь использовать переданный аргумент то, будет чуть дороже, потому что компилятор за тебя при использовании разыменует: *myIntArgument; примитивные дешевле проще копировать, когда ты передаёшь по ссылке ты передаешь размер указателя платформы (32 или 64 бита)
Evgenii
Так в современных компиляторах оптимизатор к ссылке приводит аргумент функции?
компилятор оптимизует передачу по значению передачей через регистр
H1
Если кто знает, Дайте пожалуйста ссылки или названия книг, где можно подробно про вебсокеты и с++ почитать
H1
Оу, я видимо не в тот чат написал, уже исправился
Vladislav
/warn Читайте правила чата
Олександр
@AlexFails
Berkus
/ban
Anton
/ban
👍
Anonymous
мне интересно, на что такие люди надеятся?
Anonymous
ну я про того что забанили
🦥Alex Fails
А хз
Anonymous
понятно же, что-либо продвигаемое таким образом вызывает огромное сомнение
Olesya
всем привет. ищу на плюсах удобные инструменты для работы с разреженными матрицами, а также классификаторы, в которые их можно пихнуть. пока нашла (отдельно) boost SparceMatrix, AlgLib (вроде как можно классификаторам скармливать разреженные матрицы, но пока не разобралась детально), xgboost (не работает с сжатыми матрицами), vowpal rabbit. мож, у кого ещё есть что-нибудь под рукой или кто-то что-то использовал? (да, я знаю, что всё есть на питоне, да, я знаю, что именно есть на питоне, да, мне точно надо на плюсах).
Olesya
Eigen?
о, я про него и забыла
Olesya
спс)
Olesya
https://github.com/mabur/gal оно?
Anonymous
Как сделать функцию, возвращающую указатель на метод класса? #include <iostream> using namespace std; class Member { public: void* Output() { return &pointer; } private: int *pointer; }; void FunOut(int (Member::*Everything) ()) { (*this.*Everything)(); } int main() { return 0; }
Дмитрий
сам по себе pointer это уже адрес. Не думаю что знак & тут к месту.
Anonymous
Да я даже на это не обращаю внимания, мне именно важна функция: void FunOut(int (Member::*Everything) ()) { (*this.*Everything)(); }
Anonymous
Оан у меня ошибку выдает
Anonymous
Хотя..
Anonymous
Блэт
Anonymous
Чушь какая-то
Anonymous
Ну и как тогда мне реализовать функцию, возвращающую мне указатель на метод класса?
Anonymous
Мне нужно сделать функцию, которая возвращает указатель на метод класса..
Anonymous
И всего-то
Anonymous
мембера
Anonymous
По учебнику учусь, вот-с, "указатели на элементы классов" тема..
Evgenii
кстати
Evgenii
а template <class T> auto get_member() { return &T::fn; } можно?
Egor
Я ничего криминального не вижу
Evgenii
просто все еще не до конца понимаю когда можно выводить return type
Anonymous
Anatoly
Как сделать функцию, возвращающую указатель на метод класса? #include <iostream> using namespace std; class Member { public: void* Output() { return &pointer; } private: int *pointer; }; void FunOut(int (Member::*Everything) ()) { (*this.*Everything)(); } int main() { return 0; }
struct foo { void boo() {} static void (foo::*get_boo_addr())() { return &foo::boo; } static int (foo::*get_data_addr()) { return &foo::data; } int data; }; int main() { void (foo::*method)() = foo::get_boo_addr(); int (foo::*data) = foo::get_data_addr(); }
Anonymous
Ну мне компилятор выдает ошибки C2039 и C2065
Anatoly
Ну мне компилятор выдает ошибки C2039 и C2065
я привел синтаксически и семантически корректный код С++, я не знаю почему твой компилятор его не пропускает