我查看了 lexical_cast.hpp 的困惑情况,但它仍然让我无法理解。
lexical_cast 的“基本定义”采用模板源和目标,如何能够接受诸如 lexical_cast<int>("7")
之类的语法? ?我不明白它怎么只需要一个模板化的返回类型,而不需要你在不做一些非法的事情的情况下给出参数的类型,比如部分模板特化。
注意:我理解如何使用单一模板类型和不同参数的重载来做到这一点,但我不明白 lexical_cast 是如何基于同时需要源和目标模板类型的模板函数的。
最佳答案
模板参数可以从函数参数推导出来:
template <typename T>
void foo(const T& x)
{
// T is the type of X
}
foo(5); // T is be int
foo("hello"); //T is const char[6]
关于c++ - boost::lexical_cast 如何只采用一种模板类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136400/