Мне нужно, чтобы структура шаблона была точно размером с ее членами. static_assert
представляется здесь инструментом выбора. Однако я не могу использовать static_assert
внутри самой структуры, потому что размер пока не известен. Вот что я хотел бы иметь:
template<typename T1,typename T2>
struct foo {
T1 v1;
T2 v2;
// Doesn't compile, invalid application of sizeof to incomplete type
static_assert(sizeof(foo<T1,T2>)==sizeof(T1)+sizeof(T2),"Struct size invalid");
};
Это не работает. Итак, как это сделать? Я не хочу обременять людей, которые создают экземпляр шаблона, чтобы проверить себя в каждом экземпляре. Проверка должна быть полностью автоматической при создании экземпляра структуры.