О теперь понятнее. Сразу же убился об макро. 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
а вообщето лучше выпиливать макро алмазным напильником.