2015-04-10 8 views
6

Assumendo che abbia una funzione che manipola le stringhe e che gestisca perfettamente tutti i tipi di caratteri.define alias per specifiche istanze del metodo template

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

voglio funzioni foo_string e foo_wstring essere una versione di foo_basic_string e restituiscono un std::string e std::wstring, rispettivamente.

Un modo è

std::string foo_string() 
{ 
    return foo_basic_string<char>(); 
} 

std::wstring foo_wstring() 
{ 
    return foo_basic_string<wchar_t>(); 
} 

mi chiedevo se esiste un modo per dichiarare foo_string come essere effettivamente l'istanzafoo_basic_string<char>.

+0

Il secondo e terzo argomento del modello che si passa a 'basic_string' è superfluo in quanto sono gli argomenti predefiniti. – Columbo

risposta

8

È possibile scrivere

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

Questo dichiara foo_string come riferimento alla funzione, riferendosi alla specializzazione del modello.

Problemi correlati