2015-04-10 14 views
6

Dizeleri yöneten ve tüm char türlerini mükemmel şekilde işleyen bir işlevim olduğunu varsayın.Belirli bir şablon yöntem örnekleri için diğer adları tanımlama

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

Ben fonksiyonları foo_string ve foo_wstringfoo_basic_string bir versiyonu olacak ve sırasıyla bir std::string ve std::wstring dönmek istiyorum. Aslında örneğifoo_basic_string<char> olmak olarak foo_string ilan etme yolu olup olmadığını merak ediyorum

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

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

Tek yoldur.

+0

"basic_string" öğesine ilettiğiniz ikinci ve üçüncü şablon argümanı, varsayılan argümanlar olduğundan gereksizdir. – Columbo

cevap

8

Bu Şablonunuzun uzmanlık atıfta işlevine bir referans olarak foo_string beyan

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

yazabilir.

İlgili konular