Tengo una plantilla de clase y parece que no puedo encontrar la manera de realizar una instanciación de estilo de plantilla variable.VS2107 C++ plantilla variadic ejemplo
Aquí es el "código" en la medida de lo que estoy buscando:
template<typename _Classname, typename... Args>
class CFunctorStartExT
{
friend class CXXFactory;
protected:
template<typename U>
CFunctorStartExT(typename U& _functor, Args&... args) :
m_Functor(_functor),
m_args(args)
{
}
virtual bool ProcessLoop(CSomeClass* pThread)
{
return m_Functor(pThread, m_args);
}
protected:
_Classname& m_Functor;
Args... m_args;
};
Obviamente, esto no se compilará :). La idea es crear una clase que pueda almacenar los valores pasados (si corresponde) podría tener _Classname/U defined) en el constructor para que luego se puedan recuperar y pasar a m_Functor en otra función.
Primero: ¿se puede hacer la plantilla variable incluso en VS2010? Estoy obteniendo problemas de compilación solo con la declaración de plantilla error C2143: syntax error : missing ',' before '...'
de la línea template<typename _Classname, typename... Args>
En segundo lugar, ¿se puede hacer lo que estoy tratando de lograr? ¡Gracias!
Los nombres que comienzan con un guión bajo seguido de una letra mayúscula, como '_Classname', están reservados y no debe usarlos en su programa. –
oh ... ¿reservado para qué/quién? He intentado cambiar mi convención de nombres ... (cambio de m_, g_, etc.) – BabelFish
Ver [esto] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using -un-guión bajo-en-ac-identificador). – GManNickG