【发布时间】:2016-05-15 07:45:17
【问题描述】:
考虑代码:
#include <string>
#include <sstream>
template <class T>
struct converter_impl {
std::string to_convert;
operator T() {
T result;
std::stringstream ss(to_convert);
ss >> result;
return result;
}
};
struct converter {
std::string to_convert;
template <class T, class CI = converter_impl<T>>
operator T() {
CI ci = CI{std::move(to_convert)};
return ci;
}
};
converter from_string(std::string s) {
return converter{std::move(s)};
}
现在我可以使用from_string函数如下:
string s = "123";
int x = from_string(s);
cout << x << endl;
我只是好奇是否有一种方法可以调用 converter 结构的强制转换运算符显式指定模板参数。语法:
from_string(s).operator int<int, converter_impl<int>>();
没有用...
【问题讨论】:
标签: c++ templates c++11 operator-overloading