Тип данных псевдонима для специализации шаблона - PullRequest
3 голосов
/ 10 июля 2020

Я хотел бы просто различать два беззнаковых целых числа в специализации шаблона. В идеале я хотел бы использовать

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 - не самое лучшее решение проблемы.

Каков самый простой способ присвоить псевдониму типу данных для специализации шаблона?

...