I have this code snippet and trying to understand how it works:
class GenBase
{
public:
void BaseClass()
{
std::cout << " BaseClass " << std::endl;
}
};
template <class Base>
class General: public Base
{
public:
void PrintGeneral()
{
std::cout << " General " << std::endl;
}
};
template <typename... Types>
struct BaseHelper;
template <typename Type, typename... Types>
struct BaseHelper< Type, Types...>
{
using BaseType = General<typename BaseHelper<Types... >::BaseType>;
};
template <typename Type>
struct BaseHelper<Type>
{
using BaseType = General<GenBase>;
};
template <typename... Types>
class OurClass: public BaseHelper<Types...>::BaseType
{
public:
void print_smth()
{
BaseType::PrintGeneral();
}
private:
using BaseType = typename BaseHelper<Types...>::BaseType;
};
class Test
{
public:
void foo();
}
-
using BaseType = General<typename BaseHelper<Types... >::BaseType>Why do we need
::BaseTypeat the end? -
What type would
BaseTypecontain inOurClassif we instantiate it withOurClass<int,float,Test>?
Aucun commentaire:
Enregistrer un commentaire