Załóżmy, że mam funkcję, która manipuluje łańcuchami i która doskonale obsługuje wszystkie typy znaków.zdefiniuj alias dla określonych instancji metody szablonu
template<typename CharT>
std::basic_string<CharT> foo_basic_string()
{
return std::basic_string<CharT, char_traits<CharT>, allocator<CharT> >();
}
Chcę funkcje foo_string
i foo_wstring
być wersja foo_basic_string
i zwracają std::string
i std::wstring
, odpowiednio.
Jednym ze sposobów jest
std::string foo_string()
{
return foo_basic_string<char>();
}
std::wstring foo_wstring()
{
return foo_basic_string<wchar_t>();
}
Zastanawiałem się, czy istnieje sposób, aby zadeklarować foo_string
jako faktycznie jest instancjafoo_basic_string<char>
.
Drugi i trzeci argument szablonu przekazany do 'basic_string' jest zbędny, ponieważ są to domyślne argumenty. – Columbo