return_type get_##type_id(Record_Id record_id) const\
{\
return std::get<std::vector<cpp_type>>(column)[index(record_id)];\
}\
void set_##type_id(Record_Id record_id, return_type value)\
{\
std::get<std::vector<cpp_type>>(column)[index(record_id)] = value;\
}\
const cpp_type *get_vector_##type_id() const\
{\
return &std::get<std::vector<cpp_type>>(column)[0];\
}\
void set_vector_##type_id(Record_Id record_id,\
size_t size,\
const cpp_type *value)\
{\
cpp_type *target =\
&std::get<std::vector<cpp_type>>(column)[index(record_id)];\
if (target != value)\
std::copy_n(value, size, target);\
}\
cpp_type *get_own_##type_id##_storage(Record_Id record_id)\
{\
return &std::get<std::vector<cpp_type>>(column)[index(record_id)];\
}\
const cpp_type *get_own_##type_id##_storage(Record_Id record_id) const\
{\
return &std::get<std::vector<cpp_type>>(column)[index(record_id)];\
}