定义特定模板方法实例的别名

时间:2015-04-10 12:39:56

标签: c++ templates c++11

假设我有一个操作字符串的函数,它可以完美地处理所有字符类型。

template<typename CharT>
std::basic_string<CharT> foo_basic_string()
{
   return std::basic_string<CharT, char_traits<CharT>, allocator<CharT> >();
}

我希望函数foo_stringfoo_wstring成为foo_basic_string的版本,并分别返回std::stringstd::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>

1 个答案:

答案 0 :(得分:8)

你可以写

auto& foo_string  = foo_basic_string<char>;
auto& foo_wstring = foo_basic_string<wchar_t>;

这将声明foo_string作为函数的引用,指的是模板的特化。