Код: Выделить всё
error: missing initializer for member ‘foo::boost::intrusive::unordered_set_base_hook’
[-Werror=missing-field-initializers]
10 | foo f { .bar = 1 };
| ^
< /code>
Вот минимальный воспроизводимый пример: < /p>
#include
struct foo : boost::intrusive::unordered_set_base_hook
{
int bar;
};
int main()
{
foo f { .bar = 1 };
return 0;
}
Код: Выделить всё
cmake_minimum_required(VERSION 3.18)
project(scratch_test)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Boost)
add_executable(scratch
main.cpp
)
target_compile_options(scratch
PRIVATE
-Wmissing-field-initializers
-Werror
)
target_include_directories(scratch
SYSTEM PRIVATE
${Boost_INCLUDE_DIRS}
)
Код: Выделить всё
struct generic_hook
{
void* next_;
};
struct unordered_set_base_hook : generic_hook
{
};
Я даже пытался изменить свой код, чтобы использовать свой собственный базовый класс, который I в классе инициализации в Nullptr :
struct generic_hook
{
void* next_ {nullptr};
};
struct unordered_set_base_hook : generic_hook
{
};
struct foo : unordered_set_base_hook
{
int bar;
};
int main()
{
foo f { .bar = 1 };
return 0;
}
< /code>
Я все еще получаю ошибку: < /p>
Код: Выделить всё
error: missing initializer for member ‘foo::unordered_set_base_hook’
[-Werror=missing-field-initializers]
17 | foo f { .bar = 1 };
| ^
Подробнее здесь: https://stackoverflow.com/questions/797 ... base-class
Мобильная версия