Size: a a a

2021 February 22

O

Ofee in supapro.cxx
Fake Dude
Я так и думал, спасибо. Только вашем примере разные  инстансы, а не шаблоны)
Да, пожалуй, у меня в формулировке закралась ошибка
источник

MK

Mikhail Kalugin in supapro.cxx
Да, действительно - я срезал несколько углов в начале обсуждения, и хотя все ФП-шники поняли о чем речь, новичков в ФП это может сильно путать...
источник

MK

Mikhail Kalugin in supapro.cxx
Ofee
Насколько я понял, в Scala вариантность описывается в терминах (под)типов. Так или иначе, инстанс принадлежит одному из типов (аннотированных или нет), которые и определяют поведение между типами и подтипами

Точнее, вместо подтипов я взял operator T, посчитав его более мощным инструментом
Вообще, в Scala вариативность - способ определить отношения между конкретными типами контейнеров через отношения содержимого. Твое решение делает в точности то же самое (инструментами C++, конечно). Потратить всем несколько вечеров на причесывание и можно будет смело закидывать предложение в boost, а там глядишь, лет через десять джуны будут писать в начале файла using std::variance
источник

CD

Constantine Drozdov in supapro.cxx
Mikhail Kalugin
Вообще, в Scala вариативность - способ определить отношения между конкретными типами контейнеров через отношения содержимого. Твое решение делает в точности то же самое (инструментами C++, конечно). Потратить всем несколько вечеров на причесывание и можно будет смело закидывать предложение в boost, а там глядишь, лет через десять джуны будут писать в начале файла using std::variance
Все мутабельные контейнеры инвариантны.
источник

MK

Mikhail Kalugin in supapro.cxx
Constantine Drozdov
Все мутабельные контейнеры инвариантны.
Да, понял в чем подвох... Контейнеры C++ мутабельные.
источник

CD

Constantine Drozdov in supapro.cxx
Mikhail Kalugin
Да, понял в чем подвох... Контейнеры C++ мутабельные.
Немного больно от отсутствия ковариантности shared_ptr, но очень сложно понять, как это объяснять компилятору
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Братва, подскажите пожалуйста, как мне сделать следующую вещь:

я хочу создать структуру которая будет состоять из набора указателей на функции.

Но, я не хочу определять тип функций заранее.
Хочу сделать так, что бы все сводилось к асмовскому call 0xaddress с нужным набором аргументов.

Как мне это сделать?

пробую
typedef asmlinkage (u_int64_t ((*)(u_int64_t, u_int64_t, u_int64_t, u_int64_t)) ) funcs;
а ниже
struct func_box{
funcs f[0x10];
};
но почему-то не выходит)

вопрос по GNU C, т.к. пишу в ядро...
источник

P

PRISE in supapro.cxx
Котеечко Пухнастиньке
Братва, подскажите пожалуйста, как мне сделать следующую вещь:

я хочу создать структуру которая будет состоять из набора указателей на функции.

Но, я не хочу определять тип функций заранее.
Хочу сделать так, что бы все сводилось к асмовскому call 0xaddress с нужным набором аргументов.

Как мне это сделать?

пробую
typedef asmlinkage (u_int64_t ((*)(u_int64_t, u_int64_t, u_int64_t, u_int64_t)) ) funcs;
а ниже
struct func_box{
funcs f[0x10];
};
но почему-то не выходит)

вопрос по GNU C, т.к. пишу в ядро...
Зачем ты пишешь это в С++ группе
источник

P

PRISE in supapro.cxx
Ну а ещё ты явно делаешь что-то не так
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
точно, спасибо
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
typedef asmlinkage u_int64_t (*funcat)(u_int64_t, u_int64_t, u_int64_t, u_int64_t);

static struct cats_syms{
       funcat fun1;
       funcat fun2;
};
что тут не так?
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
asmlinkage не так. а почему? потому что я не туда его запихал) спасибо. сори
источник

IZ

Ilia Zviagin in supapro.cxx
Valeriy
мыши и олежа пытаются решить проблему, это забавно. я не знаком с синтаксисом некоторых тут вещей потому что сам учу с++ так что мыши и олежа я вам не помогу
А зачем писал тогда?
источник

IZ

Ilia Zviagin in supapro.cxx
Котеечко Пухнастиньке
Братва, подскажите пожалуйста, как мне сделать следующую вещь:

я хочу создать структуру которая будет состоять из набора указателей на функции.

Но, я не хочу определять тип функций заранее.
Хочу сделать так, что бы все сводилось к асмовскому call 0xaddress с нужным набором аргументов.

Как мне это сделать?

пробую
typedef asmlinkage (u_int64_t ((*)(u_int64_t, u_int64_t, u_int64_t, u_int64_t)) ) funcs;
а ниже
struct func_box{
funcs f[0x10];
};
но почему-то не выходит)

вопрос по GNU C, т.к. пишу в ядро...
Call с нужным набором аргументов - это и есть функция
источник

IZ

Ilia Zviagin in supapro.cxx
Random Nickname
while ([this](){ std::lock_guard<std::mutex> lg(jobs_mtx_); return !jobs_.empty(); }())
{

}
Норм практис?
jobs_ - очередь задач
Ничего , что у тебя лямбда будет в каждой итерации цикла новая создаваться?
источник

IZ

Ilia Zviagin in supapro.cxx
mixa secret
Здраствуйте, что лучше MinGW или Cygwin &
Что лучше, нога или рука?
источник

IZ

Ilia Zviagin in supapro.cxx
mixa secret
Для того чтоб писать программки (в vscode на windows) наверно только для windows
Ты блин по всем граблям решил пройти...
Ок, потом опубликуйте отчёт!
источник

IZ

Ilia Zviagin in supapro.cxx
Mikhail Kalugin
Сейчас ФП в плюсах получше, чем во времена C++03, но, все равно по большей части смертоубийство, может в С++26 или C++30 станет удобней, а может появится что-то еще и мода на ФП пройдет. Просто для справки: 1 что есть из ФП в C++ - Функции как объект первого класса (а значит, функции высшего порядка), декомпозиция POD, лямбды, автоматический вывод типов (но синтаксис многословный аки java, раньше везде был явный тип теперь везде auto, видел сравнение плюсов с каким то ФП языком (кажется, Scala - auto вместо val просто убило). Чего нет из ФП - тайпклассы (можно организовать похожее поведение, но в большинстве случаев вынос мозга гарантирован), паттерн-матчинг (Страуструп и студенты пытаются придумать, последнее что я видел, мозг не выносит, но делает очень много лишних движений), каррирование (если очень хочется, то можно, но сложно).
Ничего не смертоубийство, с ranges так вообще огонь, да ещё и stl на место ставит
источник

IZ

Ilia Zviagin in supapro.cxx
Alexander Wizaral
Всем привет. Возник вопрос. Вот кусок кода:

// header.hpp
class Class {
   // ...
public:
   static const Class var;
   Class(int x, int y);
   // ...
};

// source.cpp
const Class Class::var{-1, -1};

Я знаю, что начиная с C++17 есть возможность не писать в отдельном файле инициализацию переменной, а сделать это сразу в header.hpp, но только при добавлении слова inline перед именем переменной. Проблема в том, что почему-то не получается это сделать, если тип переменной в классе совпадает с типом самого класса. Вопрос: можно ли как-то этого добиться, чтобы прописать инициализацию в одном файле?
Кажется, у тебя просто нет дефолтного конструктора, но ты его хочешь использовать
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
а как это понимать?
note: expected ‘struct cat_syms *’ but argument is of type ‘struct cat_syms *’
источник