C++ 枚举类型的类的模板参数推断?
编辑:我认为这个问题被错误地标记为重复,特别是对于给定的“重复项”。请参见下文。 今天我尝试(第一次)使用模板函数参数推断 我的目标是实现一个简单的状态系统。下面的代码(希望)显示了重要的部分(我没有测试它,只是为了说明问题): 有趣的是对SetStatus的调用。对于前两行不起作用的代码,编译器抱怨它C++ 枚举类型的类的模板参数推断?,c++,templates,enums,template-argument-deduction,C++,Templates,Enums,Template Argument Deduction,编辑:我认为这个问题被错误地标记为重复,特别是对于给定的“重复项”。请参见下文。 今天我尝试(第一次)使用模板函数参数推断 我的目标是实现一个简单的状态系统。下面的代码(希望)显示了重要的部分(我没有测试它,只是为了说明问题): 有趣的是对SetStatus的调用。对于前两行不起作用的代码,编译器抱怨它 couldn't deduce template parameter `Module' 当我明确指定模块时(如第三行所示),程序将编译 我的问题是: 编译器不应该在前两行中推断模块类型吗?!为
couldn't deduce template parameter `Module'
当我明确指定模块时(如第三行所示),程序将编译
我的问题是:
template <typename T>
void g(typename Foo<T>::type);
模板
void g(typename Foo::type);
我的案例不同:
template <typename T>
void SetStatus(enum T::Status localStatus)
模板
void SetStatus(枚举T::Status localStatus)
请删除重复标志并回答我的原始问题。
SetStatus(确定)
正在传递枚举,参数类型为enum,并且不知道它的包装类,模板参数推断无法确定您想要包装类。谢谢。在这种特定情况下,通过上下文和逻辑,编译器可以在理论上指出枚举参数属于类DerivedA并推断出类型,但实际上这不是模板参数推断的用法,这是正确的吗?SetStatus(OK)
正在传递枚举,参数类型为enum,并且不知道它的包装类,模板参数推断无法确定您想要包装类。谢谢。在这种特定情况下,通过上下文和逻辑,编译器可以在理论上指出枚举参数属于类DerivedA并推断出类型,这是正确的吗?但在实践中,这并不是使用模板参数推断的方式?
couldn't deduce template parameter `Module'
template <typename T>
void g(typename Foo<T>::type);
template <typename T>
void SetStatus(enum T::Status localStatus)