#include <cstdint>
#include <iostream>
struct struct_1
{
std::uint8_t const variable1;
std::uint16_t const variable2;
};
template<typename T>
struct config_data
{
T const * const ptr_to_c_array;
std::uint8_t const arraySize;
};
template <typename T, std::size_t N>
config_data<T> make_config_data(const T (&a)[N])
{
return {a, N};
}
int main()
{
struct_1 const array_1[] = { {2,5},{1,9},{20,20} };
config_data <struct_1> const config_data_1 = make_config_data(array_1);
std::cout << array_1 << std::endl;
std::cout << config_data_1.ptr_to_c_array << std::endl;
std::cout << int(config_data_1.arraySize) << std::endl;
}
I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCAgc3RydWN0XzEKewogICAgc3RkOjp1aW50OF90ICAgICBjb25zdCAgIHZhcmlhYmxlMTsKICAgIHN0ZDo6dWludDE2X3QgICAgY29uc3QgICB2YXJpYWJsZTI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgY29uZmlnX2RhdGEKewogICAgVCBjb25zdCAqIGNvbnN0IHB0cl90b19jX2FycmF5OwogICAgc3RkOjp1aW50OF90IGNvbnN0ICBhcnJheVNpemU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KY29uZmlnX2RhdGE8VD4gbWFrZV9jb25maWdfZGF0YShjb25zdCBUICgmYSlbTl0pCnsKICAgIHJldHVybiB7YSwgTn07Cn0KCmludCBtYWluKCkKewogICAgc3RydWN0XzEgY29uc3QgIGFycmF5XzFbXSA9ICB7IHsyLDV9LHsxLDl9LHsyMCwyMH0gfTsKICAgIGNvbmZpZ19kYXRhIDxzdHJ1Y3RfMT4gY29uc3QgY29uZmlnX2RhdGFfMSAgPSBtYWtlX2NvbmZpZ19kYXRhKGFycmF5XzEpOwoKICAgIHN0ZDo6Y291dCA8PCBhcnJheV8xIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBjb25maWdfZGF0YV8xLnB0cl90b19jX2FycmF5IDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBpbnQoY29uZmlnX2RhdGFfMS5hcnJheVNpemUpIDw8IHN0ZDo6ZW5kbDsKfQo=