I have code that looks something like this:
template <typename Tag, int v>
struct Const
{
    static constexpr int value = v;
};
struct Compound
    :
    Const<struct T1, 111>,
    Const<struct T2, 222>
{
    Compound(); // constructor is not constexpr
};
I would like to know a compile-time construct (e.g. metafunction) that given either struct T1 or struct T2 as argument can extract as constexpr int 111 or 222 respectively from Compound. 
I think I want a metafunction that looks something like this but don't know how to write it:
template <class C, typename Tag>
struct GetConst
{
    static constexpr int value = /* some magic */
};
GetConst<Compound, struct T1>::value == 111
GetConst<Compound, struct T2>::value == 222
Any ideas?
Aucun commentaire:
Enregistrer un commentaire