现在我有这样的事情:

int a = getVal<int>("key1");
double b = getVal<double>("key2");


其中getVal()只是强制转换并返回与键对应的值。是否可以将其转换为:

int a = getVal("key1");
double b = getVal("key2");


这在代码上并没有太大的区别,但是我只是想知道这是否可能。谢谢您的帮助。

最佳答案

像这样:

template <typename T>
T getVal(const string& key);  // as before

class ValProxy {
private:
  ValProxy(const string& key) : key_(key) {}
  string key_;

  friend ValProxy getVal(const string& key);
public:
  template <typename T>
  operator T() const {
    return getVal<T>(key_);
  }
};

ValProxy getVal(const string& key) {
  return ValProxy(key);
}

关于c++ - 基于预期 yield 类型的模板参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25375118/

10-11 18:15