Код: Выделить всё
#include
#include
#include
using namespace std::literals;
using known_types_t = std::variant;
enum class FieldOrder { A, B, C };
template struct Field {
Field(const T &&v, const std::string &&h) : value(v), header(h) {}
T value;
const std::string header;
};
template struct Row {
Row(F &&...fields) : arr{fields.value...}, header{fields.header...}
{
// static_assert();
}
std::array arr;
std::array header;
};
int main() {
Row row{Field(1, "Integers"s),
Field(2.0, "Doubles"s),
Field('A', "Chars"s)};
return 0;
}
Код: Выделить всё
static_assertНапример, приведенный выше код будет компилироваться, а следующий код не удастся:
Код: Выделить всё
Row row{Field(1, "Integers"s),
Field(2.0, "Doubles"s),
Field('A', "Chars"s)};
- Пробел также будет ошибкой. Класс перечисления используется в том виде, в котором он отображается, начиная с 0 и далее подряд.
- Мне не интересно знать, хороший ли это подход, я уже использовал другой подход, но мне все еще интересно, возможно ли это.
Подробнее здесь: https://stackoverflow.com/questions/798 ... tic-assert