#include <iostream>
#include <vector>
using namespace std;
enum Types
{
Int,
Double
};
//Use struct instead of class for auto-public.
template<Types> struct TypesMap;
template<> struct TypesMap<Int>
{
using type = int;
};
template<> struct TypesMap<Double>
{
using type = double;
};
int main() {
std::vector<void*> Test;
Test.push_back(new TypesMap<Int>::type(0.5));
Test.push_back(new TypesMap<Double>::type(0.5));
std::cout << *((TypesMap<Int>::type*)Test[0]) << " " << *((TypesMap<Double>::type*)Test[1]);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmVudW0gVHlwZXMKewoJSW50LAoJRG91YmxlCn07CgovL1VzZSBzdHJ1Y3QgaW5zdGVhZCBvZiBjbGFzcyBmb3IgYXV0by1wdWJsaWMuCnRlbXBsYXRlPFR5cGVzPiBzdHJ1Y3QgVHlwZXNNYXA7Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBUeXBlc01hcDxJbnQ+CnsKCXVzaW5nIHR5cGUgPSBpbnQ7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBUeXBlc01hcDxEb3VibGU+CnsKCXVzaW5nIHR5cGUgPSBkb3VibGU7Cn07CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPHZvaWQqPiBUZXN0OwoJCglUZXN0LnB1c2hfYmFjayhuZXcgVHlwZXNNYXA8SW50Pjo6dHlwZSgwLjUpKTsKCVRlc3QucHVzaF9iYWNrKG5ldyBUeXBlc01hcDxEb3VibGU+Ojp0eXBlKDAuNSkpOwoJCglzdGQ6OmNvdXQgPDwgKigoVHlwZXNNYXA8SW50Pjo6dHlwZSopVGVzdFswXSkgPDwgIiAiIDw8ICooKFR5cGVzTWFwPERvdWJsZT46OnR5cGUqKVRlc3RbMV0pOwoJCglyZXR1cm4gMDsKfQ==