struct A{
int i;
std::string s;
unsigned int u;
};
/*функция времени выполнения что задаёт
правило по преобразованию <А> в <int, std::string>
*/
template<typename Arg...>
struct Types;
auto types_new=foo<A,float,A>();//вернёт Types<int,std::string,float,int,std::string>
//пользовательское
template<> constexpr auto Type_to<>(glm::vec3 vec){
return std::tuple(vec.x,vec.y,vec.z);
//для любого типа
template<typename T>
constexpr auto Type_to(T value){
return value;
}
};
template<typename ...Arg>
constexpr auto foo(){
return std::tuple_cat{std::make_tuple<Arg>...,""};
}