UmN*_*obe 6 c++ templates c++11
假设我有一个操作字符串的函数,它可以完美地处理所有字符类型.
template<typename CharT>
std::basic_string<CharT> foo_basic_string()
{
return std::basic_string<CharT, char_traits<CharT>, allocator<CharT> >();
}
Run Code Online (Sandbox Code Playgroud)
我想要函数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>();
}
Run Code Online (Sandbox Code Playgroud)
我在想,如果有申报方式foo_string为实际上是实例 foo_basic_string<char>.
你可以写
auto& foo_string = foo_basic_string<char>;
auto& foo_wstring = foo_basic_string<wchar_t>;
Run Code Online (Sandbox Code Playgroud)
这声明foo_string为函数的引用,指的是模板的特化.