I am tryng to implement a class selector, the function of this class is to select a specific trait of a class at compilation time. But I getting buggy Another requirement is that no static function has to be implement. My experience in metaprogramming is to low.
#include <stdio.h>
#include <iostream>
template<class OptionSelected>
struct ContainnerValue
{
typedef OptionSelected selectedValue;
typename selectedValue value;
};
////Enum definition
enum class EOptions
{
Option_One,
Option_two
};
////trait base definition
template<EOptions>
struct SelectorClass{};
template<>
struct SelectorClass<EOptions::Option_One>
{
void printClass()
{
std::cout<<"Class Selection One"<<std::endl;
}
};
typedef SelectorClass<EOptions::Option_One> Option_One;
template<>
struct SelectorClass<EOptions::Option_two>
{
void printClass()
{
std::cout<<"Class Selection two"<<std::endl;
}
};
typedef struct SelectorClass<EOptions::Option_two> Option_Two;
int main(void)
{
ContainnerValue<Option_One>::value.printClass();
printf("Hello World!\n");
return 0;
}