Albert 
    
    
        
        
        
        в Manjaro Linux x64
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        Если в битах, то да. В байтах 8
    
 
    
    Albert 
    
    
        
        
        
        а само это число в limits.h хранится или где-то в другом месте?
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        https://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros - тут покури
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        еще в интернетах говорят про stubs-32.h
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        http://stackoverflow.com/questions/30728608/role-of-wordsize-in-compilation
    
 
    
    Albert 
    
    
        
        
        
        спасибо
    
 
    
    Andrei 
    
    
        
        
        
        Sizeof(ptrdiff_t) например
    
 
    
    Andrei 
    
    
        
        
        
        А ну да, если для макросов надо.
    
 
    
    Aleksey 
    
    
 
    
    Stanislav 
    
    
        
        
        
        господа
        template<typename T, typename U>
        constexpr size_t offsetOf(U T::*member)
        {
          return (ptrdiff_t)&((T*)nullptr->*member) - (ptrdiff_t)nullptr;
        }
        
        template<typename T, typename U> void foo(U T::*member)
        {
           // offset( ??? )
          // some other staff
        }
        
        как тут в оффсет параметры передать?
    
 
    
    Stanislav 
    
    
        
        
        
        вызывается offsetOf(&Struct::value)
    
 
    
    Andrei 
    
    
        
        
        
        Привет.
    
 
    
    Andrei 
    
    
        
        
        
        Что ты имеешь в виду?
    
 
    
    Andrei 
    
    
        
        
        
        Страная конструкция вызывать -nullptr
    
 
    
    Stanislav 
    
    
        
        
        
        ну параметры из foo передать в offset
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        offsetOf<Struct, decltype(Struct::value)>
    
 
    
    Andrei 
    
    
        
        
        
        Берешь и передаёшь, лол.
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        алсо, я бы тип не передавал, а делал внутри шаблона decltype
    
 
    
    Andrei 
    
    
        
        
        
        Просто напиши специализацию которую вызываешь.
    
 
    
    Andrei 
    
    
        
        
        
        И да, staff это сотрдуники, ты имел в виду stuff :3
    
 
    
    Stanislav 
    
    
        
        
        
        ой да пофиг) главное все поняли)
    
 
    
    Stanislav 
    
    
        
        
        
        ах, все
    
 
    
    Stanislav 
    
    
        
        
        
        template<typename T, typename U>
        size_t offsetOf(U T::*member)
        {
          return (ptrdiff_t)&((T*)nullptr->*member) - (ptrdiff_t)nullptr;
        }
        
        template<typename T, typename U>
        U deserialize_field(const unsigned char *data, U T::*member) {
          size_t offset = offsetOf<T, U>(member);
          U tmp = *(U*)&data[offset];
          return tmp;
        }
        
        value = deserialize_field(some_data, &Struct::value)
        как то так вышло :D
    
 
    
    Stanislav 
    
    
        
        
        
        наверн не оч
    
 
    
    🦥Alex Fails 
    
    
 
    
    Ned 
    
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        мммм... гитхаб...
    
 
    
    Stanislav 
    
    
        
        
        
        😂 т.е. вживую не виделись
    
 
    
    Ned 
    
    
        
        
        
        Господа, передаю в функцию две ссылки на массивы double
    
 
    
    Sergey 
    
    
        
        
        
        вааабщета для mac users должны были быть 2 парня
    
 
    
    Ned 
    
    
        
        
        
        /files/Coding/SLU_MPI/main.cpp:137: error: invalid initialization of non-const reference of type 'double*&' from an rvalue of type 'double*'
            swapArr(N, &myA[local_i*N], myA+maxstr*N);
                                     ^
    
 
    
    Sergey 
    
    
        
        
        
        ))))))))))))000000000000000
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        😂
    
 
    
    ඞ 
    
    
 
    
    Ned 
    
    
        
        
        
        почему такая ошибка?
    
 
    
    Sergey 
    
    
        
        
        
        пиздец
    
 
    
    Ned 
    
    
        
        
        
        где лажа-то?
    
 
    
    Ned 
    
    
        
        
        
        я уже не знаю, как ухищряться
    
 
    
    Sergey 
    
    
 
    
    Ned 
    
    
        
        
        
        надо поменять местами два массива одинаковой длины
    
 
    
    🦥Alex Fails 
    
    
        
                    
                        
                            
                            почему такая ошибка?
                        
                    
                
        
        
        myA какого типа 
        Проблема: #cpp #beginner #references #pointers #lvalue #rvalue
    
 
 
    
    Sergey 
    
    
        
        
        
        Покажи объявление функции
    
 
    
    Ned 
    
    
        
        
        
        double *
    
 
    
    Ned 
    
    
        
        
        
        да хоть весь код
    
 
    
    Ned 
    
    
        
        
        
        
    
 
    
    Ned 
    
    
        
        
        
        строка 136 - ошибка
    
 
    
    Ned 
    
    
        
        
        
        ни так ни так не пашет
    
 
    
    Ned 
    
    
        
        
        
        по стилю, плиз, засирайте потом, мне нужно это срочно доделать
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        ща гляну
    
 
    
    Sergey 
    
    
        
        
        
        Функция - void swapArr(const int N, double *&A, double *&B
        double *myA - твой массив
        Ты передаешь &myA[local_i*N]
    
 
    
    Ned 
    
    
        
        
        
        да
    
 
    
    Ned 
    
    
        
        
        
        она наверху реализована
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        а зачем ссылка на double*?
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        можно ж просто double*
    
 
    
    Ned 
    
    
        
        
        
        затем чтобы поменял в итоге массивы
    
 
    
    Ned 
    
    
        
        
        
        а вот не канает иначе
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        ну, у тебя указатель считается из операции &
    
 
    
    Sergey 
    
    
        
        
        
        +
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        поэтому у тебя получается то, что надо присваивать в правой части (то самое rvalue)
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        а по ссылке можно передавать только то, во что можно положить (то, что в присваивании слева написано, или lvalue)
    
 
    
    Stanislav 
    
    
        
        
        
        std::swap то чем не угодил? массивы умеет
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        (Криво пояснил, но как-то так)
    
 
    
    🦥Alex Fails 
    
    
 
    
    Ned 
    
    
        
        
        
        дада но пусть пока будет так
    
 
    
    Ned 
    
    
        
        
        
        то есть без ссылок он их поменяет?
    
 
    
    Sergey 
    
    
        
        
        
        убери ссылку
    
 
    
    Ned 
    
    
        
        
        
        а теперь нужно понять, почему это делается так. у меня там выше есть вызов int readMatrix(int &N, double *&A, double *&B);
    
 
    
    Ned 
    
    
        
        
        
        собсно внутри которой А и B инициализируются через new
    
 
    
    Ned 
    
    
        
        
        
        если ссылки в ридматриксе нет, она их не инициализирует
    
 
    
    Ned 
    
    
 
    
    Ned 
    
    
        
        
        
        если мы передаём аргумент в функцию, она его копирует, верно?
    
 
    
    🦥Alex Fails 
    
    
        
        
        
        если не по ссылке
    
 
    
    Sergey 
    
    
        
        
        
        да
    
 
    
    Ned 
    
    
        
        
        
        если передаем указатель на него, она копирует, но он будет указывать на то же
    
 
    
    Sergey 
    
    
        
        
        
        через стек
    
 
    
    Ned 
    
    
        
        
        
        если ссылку на что-то, она его не копирует