Puntero a miembro de clase como parámetro de plantilla

Quiero usar un puntero a un miembro de la clase como un parámetro de plantilla como en:

template <class Class, class Result, Result Class::*Member>
struct MyStruct {
    // ...
};

Usando esta estructura comoMyStruct<SomeClass, SomeResult, &SomeClass::value> variable Funciona bien, pero no me gusta que tenga que especificarSomeClass ySomeResult.

Me gustaria usarMyStruct<&SomeClass::value> variable si eso es posible, pero sin perder la habilidad de pasar cualquier clase y tener cualquier tipo de resultado.

Intenté lo siguiente, pero la sintaxis es ilegal:

template <class Class, class Result>
template <Result Class::*Member>
struct MyStruct {
    // ...
};

error: demasiadas plantillas-listas-parametros

Intenté usar una función auxiliar (que en realidad funciona en Clang pero GCC lo rechaza):

template <class Class, class Result>
static constexpr auto makeMyStruct(Result Class::*member) ->
MyStruct<Class, Result, member> {
    // ...
}

error: uso del parámetro `miembro 'fuera del cuerpo de la función
error: el argumento de la plantilla 3 no es válido

¿Es posible tener un simpleMyStruct<&SomeClass::value>, y si es así, ¿cómo?

Pregunta relacionada que no resolvió mi pregunta:

Puntero a miembro de clase como parámetro de plantillaError de C ++ 0x con constexpr y función de plantilla de retorno

Respuestas a la pregunta(4)

Su respuesta a la pregunta