Я хотел бы просто различать два беззнаковых целых числа в специализации шаблона. В идеале я хотел бы использовать
using TextureID = unsigned int;
Но это невозможно, поскольку TextureID точно такой же, как и unsigned int для компилятора.
Итак, я «решил» свою проблему с помощью перечисления class:
enum class TextureID : unsigned int
{
Default = 0
};
template<typename T>
inline void GuiSystem::InputField<T>(const char* name, T* value)
{}
template<>
inline void GuiSystem::InputField<unsigned int>(const char* name, unsigned int* value)
{
Log("unsigned int");
}
template<>
inline void GuiSystem::InputField<TextureID>(const char* name, TextureID* value)
{
int tempValue = int(*value);
ImGui::InputInt(name, &tempValue);
*value = TextureID(glm::max(0, tempValue));
Log("TextureID");
}
Однако я думаю, что enum class - не самое лучшее решение проблемы.
Каков самый простой способ присвоить псевдониму типу данных для специализации шаблона?