C++ 模板专门化的别名数据类型

C++ 模板专门化的别名数据类型,c++,template-specialization,custom-data-type,C++,Template Specialization,Custom Data Type,我只想在模板专门化中区分两个无符号整数。理想情况下,我想使用 using TextureID = unsigned int; 但这是不可能的,因为TextureID与编译器的无符号int完全相同 因此,我使用enum类“解决”了我的问题: enum class TextureID : unsigned int { Default = 0 }; template<typename T> inline void GuiSystem::InputField<T

我只想在模板专门化中区分两个无符号整数。理想情况下,我想使用

using TextureID = unsigned int;
但这是不可能的,因为TextureID与编译器的无符号int完全相同

因此,我使用enum类“解决”了我的问题:

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类TextureID:unsigned int
{
默认值=0
}; 
模板
inline void GuiSystem::InputField(常量字符*名称,T*值)
{}
模板
内联void GuiSystem::InputField(常量字符*名称,无符号整数*值)
{
对数(“无符号整数”);
}
模板
内联void GuiSystem::InputField(const char*名称,TextureID*值)
{
int tempValue=int(*值);
ImGui::输入(名称和临时值);
*value=TextureID(glm::max(0,tempValue));
日志(“纹理ID”);
}
然而,我认为枚举类并不是解决这个问题的最干净的方法


为模板专门化别名数据类型的最简单方法是什么?

您可以将整数包装在结构中并重载所有必要的运算符。可能还需要定义
std::is_integral
,谢谢您提供的信息!在我的示例中使用enum类是否有任何重要的缺点?