#include <iostream>
#include <type_traits>
#include <typeinfo>

enum MyType
{
    A,
    B
};

template<MyType>
struct MyStruct {
    MyStruct(int, double){};
};

template<MyType type>
MyStruct<type> createMyStruct()
{
    return {0, 1.1};
}

int main()
{
    auto structA = createMyStruct<A>();
    auto structB = createMyStruct<B>();

    std::cout << typeid(structA).name() << std::endl;
    std::cout << typeid(structB).name() << std::endl;
}