2015-04-10 10 views
6

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>.

+0

Drugi i trzeci argument szablonu przekazany do 'basic_string' jest zbędny, ponieważ są to domyślne argumenty. – Columbo

Odpowiedz

8

Możesz napisać

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

Ten deklaruje foo_string jako odniesienie do funkcji, odnosząc się do specjalizacji szablonu.

Powiązane problemy