LINUX.ORG.RU

История изменений

Исправление Ivan_qrt, (текущая версия) :

А ещё лучше так:

template <std::size_t BUF_SIZE>
struct X {
    int i;
    float f;
    uint8_t p;
    char buf[BUF_SIZE];
};

template <template <std::size_t> class T, std::size_t SIZE = 4096>
using Type = T<SIZE - sizeof(T<0>)>;

Type<X> t {.i = 1, .f = 0.2, .p = 50, .buf = "test"};

Что характерно в этих вариантах массив не обязан быть последним в структуре.

Исходная версия Ivan_qrt, :

А ещё лучше так:

template <std::size_t BUF_SIZE>
struct X {
    int i;
    float f;
    uint8_t p;
    char buf[BUF_SIZE];
};

template <template <std::size_t> class T, std::size_t SIZE = 4096>
using Type = T<SIZE - sizeof(T<0>)>;

Type<X> t {.i = 1, .f = 0.2, .p = 50, .buf = "test"};