假设我有一个操作字符串的函数,它可以完美地处理所有字符类型。
template<typename CharT>
std::basic_string<CharT> foo_basic_string()
{
return std::basic_string<CharT, char_traits<CharT>, allocator<CharT> >();
}
我希望函数foo_string
和foo_wstring
成为foo_basic_string
的版本,并分别返回std::string
和std::wstring
。
一种方法是
std::string foo_string()
{
return foo_basic_string<char>();
}
std::wstring foo_wstring()
{
return foo_basic_string<wchar_t>();
}
我想知道是否有办法将foo_string
声明为实际上是实例 foo_basic_string<char>
。
答案 0 :(得分:8)
你可以写
auto& foo_string = foo_basic_string<char>;
auto& foo_wstring = foo_basic_string<wchar_t>;
这将声明foo_string
作为函数的引用,指的是模板的特化。