【发布时间】:2018-02-15 16:24:56
【问题描述】:
我想要一个函数模板来实现任意类型转换:
template<typename T, typename S>
S Convert(const T& input)
{
// code.....
}
例如:
Convert<int, std::string>(12); // convert int to std::string
Convert<std::string, CString>("test"); // convert std::string to CString
Convert<bool, int>(true); // convert bool to int
有可能吗?
【问题讨论】:
-
是的。
boost::lexical_cast会这样做,虽然不是针对CString,但肯定有自定义点。 -
@Quentin 我不想使用 boost
-
这是你的电话,但这意味着是的,这是可能的,如果你想编写自己的代码,你可以从 Boost 的源代码中获得灵感。
-
@Quentin 好的,坦克
-
不清楚你想要什么。
Convert应该意思是什么?对于某些类型,有多种方法可以将T转换为S,这些方法在不同的上下文中都可能有用。这就是为什么 C++ 有许多具有不同语义的转换运算符,以及为什么可以使用不同的配置选项以多种不同的方式将整数格式化为字符串的原因。如果问题是公正的,我是否可以制作具有任意语义和特殊行为情况的模板函数,那么答案是肯定的。
标签: c++ c++11 templates type-conversion