模板参数基于预期的返回类型

时间:2014-08-19 03:05:18

标签: c++

现在我有这样的事情:

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

其中getVal()只是强制转换并返回与该键对应的值。有可能把它变成这个:

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

代码并没有太大差异,但我大多只是想知道这是否可行。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

这样的事情:

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);
}