Estoy tratando de escribir una función que pueda manejar tanto char & wchar_t usando la característica type_traits de C++ 0x. Sí, sé cómo hacerlo sin type_traits, pero quiero hacerlo usando type_traits para una mejor comprensión de la característica.¿Es posible usar type_traits para diferenciar entre char & wchar_t?
template <typename T>
void SplitIt(T* base, T* ext, const std::basic_string<T>& fullFilePath, std::true_type)
{
_splitpath(fullFilePath.c_str(),NULL,NULL,base,ext);
}
template <typename T>
void SplitIt(T* base, T* ext, const std::basic_string<T>& fullFilePath, std::false_type)
{
_wsplitpath(fullFilePath.c_str(),NULL,NULL,base,ext);
}
template <typename T>
std::basic_string<T> GetBaseName(const std::basic_string<T>& fullFilePath)
{
T base[300], ext[50];
SplitIt(base, ext, fullFilePath, /*What goes here?*/);
return std::basic_string<T>(buf) + ext;
}
int main()
{
std::basic_string<TCHAR> baseName = GetBaseName(std::basic_string<TCHAR>(__FILE__));
}
¿Hay alguna propiedad type_traits que diferencie a char de wchar_t?
Pff, soluciones fáciles! ... Estoy avergonzado de no pensar en eso ... :( – Xeo
Brillante! Aunque debería ser is_same en mi código. Gracias. –
Sharath
@Sharat: Correcto, lo arreglé ... – MartinStettner