Я хотел бы создать класс Vertex и хотел бы обобщить его, имея возможность создать 32-битную версию с плавающей и 64-разрядной версиями и, возможно, версию int. Я хотел бы сделать это:
template <typename P>
struct Vertex
{
if (typeid(P) == typeid(float))
{
vec3 position;
vec3 normal;
vec2 texcoords;
}
else if (typeid(P) == typeid(double))
{
dvec3 position; // This is a double vector
dvec3 normal;
dvec2 texcoords;
}
else if (typeid(P) == typeid(int))
{
ivec3 position; // This is an integer vector
ivec3 normal;
ivec2 texcoords;
}
};
Я не думаю, что если инструкции не оцениваются во время компиляции, это просто иллюстрация того, что я хотел бы сделать. Есть какой-либо способ сделать это? Или я должен специализироваться на каждом типе или просто переписывать все разные версии?