@Porohovnik

Как преобразовать один variadic templates в другой variadic templates?

Как один variadic templates преобразовать в другой, с другим количеством параметров, по определённому правилу?(код илюстрирует проблему)
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>
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@Porohovnik Автор вопроса
https://en.cppreference.com/w/cpp/utility/tuple/tu...
используя эту функцию, и правило вида:
//пользовательское
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>...,""};
    }

можно получить почти желаемый результат(есть один лишний тип в конце,но его просто убрать)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы