当该参数的类型是模板类型时,如何提供默认参数参数?
How to provide a default parameter argument when the type of that parameter is a template type?
template <class V, class K>
class Pair {
public:
Pair(const K& key, const V& value = initial) { // what should "initial" be here?
// ...
}
}
例如,如果我这样使用 class:
int main() {
Pair<int, std::string> p1(21); // p1 should be {21, ""} as the default value of a string is "".
Pair<int, double> p2(20); // p2 should be {20, 0.0} assuming the default value of a double is 0.0
}
我怎样才能做到这一点?
尝试V()
喜欢:
template <class K, class V>
class Pair {
public:
Pair(const K& key, const V& value = V()) { }
};
或者:
template <class K, class V>
class Pair {
public:
Pair(const K& key, const V& value = {}) { }
};
注意需要默认构造函数(可以不带参数调用)。
template <class V, class K>
class Pair {
public:
Pair(const K& key, const V& value = initial) { // what should "initial" be here?
// ...
}
}
例如,如果我这样使用 class:
int main() {
Pair<int, std::string> p1(21); // p1 should be {21, ""} as the default value of a string is "".
Pair<int, double> p2(20); // p2 should be {20, 0.0} assuming the default value of a double is 0.0
}
我怎样才能做到这一点?
尝试V()
喜欢:
template <class K, class V>
class Pair {
public:
Pair(const K& key, const V& value = V()) { }
};
或者:
template <class K, class V>
class Pair {
public:
Pair(const K& key, const V& value = {}) { }
};
注意需要默认构造函数(可以不带参数调用)。