ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
21 января
1490825 Топик полностью
framer (13.01.2025 21:04, просмотров: 108) ответил klen на функции драйвера как раз и вынесены - в параметр шаблона - класс io_t , а сам io_t тоже шаблонный и имеет параметр - класс драйвер специфической флехи.
О теперь понятнее. Сразу же убился об макро. 
error: taking address of temporary array

[build] 529 | err = dir_commit(&root, LFS_MKATTRS({LFS_MKTAG(TYPE_CREATE, 0, 0), NULL},{LFS_MKTAG(TYPE_SUPERBLOCK, 0, 8), fs_name},{LFS_MKTAG(TYPE_INLINESTRUCT, 0, sizeof(supersector)), &supersector}));

взял на стол макро а там времменый обьект в r-value.
макро разварачивет в такое чтото на примере одного поля

auto a = (mattr_t[1]){LFS_MKTAG(TYPE_CREATE, 0, 0), NULL};
error: taking address of temporary array
[build]    52 |         auto a = (mattr_t[1]){LFS_MKTAG(TYPE_CREATE, 0, 0), NULL};
[build]       |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

вопрос решается примерно так

auto a = std::move(mattr_t[1]){LFS_MKTAG(TYPE_CREATE, 0, 0), NULL};
 warning: unused variable ‘a’ [-Wunused-variable]
[build]    52 |         auto a = std::move((mattr_t[1]){LFS_MKTAG(TYPE_CREATE, 0, 0), NULL});


интересно как у Вас это компилируется. Даже если и компилируется то это может быть мина.
если что то

gcc --version

gcc (Ubuntu 13.1.0-8ubuntu1~22.04) 13.1.0

а вообщето лучше выпиливать макро алмазным напильником.