J'ai typename T1
et j'ai un pack de paramètres typename... Variadic
.Struct qui contient un alias au premier type convertible d'un pack variadique
Je souhaite créer une structure qui contient un alias d'utilisation using Type = ...
au premier type du jeu de paramètres dans lequel T1
peut être converti. Jusqu'à présent, je l'ai essayé ce qui suit:
template<typename T1, typename T2, typename... Variadic>
struct VariadicConvertibleType
{
using Type = std::enable_if<std::is_convertible<T1, T2>::value, T2>::type;
};
Cela pourrait être une solution potentielle à l'aide SFINAE pour les deux premiers types, mais je dois développer ce à tous les types dans le paquet à l'aide de la récursivité. Toutes mes tentatives ont échoué jusqu'ici, parce que vous ne pouvez pas mettre conditionals en utilisant des déclarations d'alias. Sinon, quelque chose de similaire à ce qui pourrait être utilisé:
template<typename T1, typename T2, typename... Variadic>
struct VariadicConvertibleType
{
using Type = std::is_convertible<T1, T2>::value ? T2 : VariadicConvertibleType<T1, Variadic...>::Type;
};
Je peux utiliser tout jusqu'à (et y compris) 14 C++ pour mettre en œuvre la solution. Je ne peux pas utiliser autre chose que la bibliothèque standard.
http://fr.cppreference.com/w/cpp/types/conditionnel peut-être? Et quel devrait être le cas de base pour les types compatibles? – LogicStuff