仅在其他过载失败时使用模板化过载

XTF*_*XTF 0 c++

有没有办法确保除非所有其他重载都失败,否则不选择模板重载,而不使用enable_if?

Int应该由long重载处理,但它由模板重载处理,编译器不喜欢它.

class SetProxy {
public:
  void operator=(const TemplateString& value) {
    dict_.SetValue(variable_, value);
  }

  template<class T>
  void operator=(const T& value) {
    dict_.SetValue(variable_, TemplateString(value.data(), value.size()));
  }

  void operator=(long value) {
    dict_.SetIntValue(variable_, value);
  }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*k B 5

为什么会intlong重载处理?它们不是同一类型,并且模板与T = int完美匹配,intlong不是完美匹配.

您能否提供有关您尝试解决的潜在问题的更多信息?