4
#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>>();
不工作...
所以沒有辦法通過有第二個模板參數,這可能是有趣的...? –
作爲解決方案,您可以將模板化函數'cast'添加到'struct converter'中。然後,當隱式轉換可能調用'operator T'時,當你需要明確投射時,你可以調用你的temlate函數。 – user2807083
好主意!謝謝! –