是否可以使用type_traits来区分char和wchar_t?

Sha*_*ath 6 c++ type-traits

我试图编写一个函数,可以使用C++ 0x的type_traits功能处理char和wchar_t.是的,我知道如何在没有type_traits的情况下完成它,但我想使用type_traits来更好地理解该功能.

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__));
}
Run Code Online (Sandbox Code Playgroud)

是否有任何type_traits属性可以区分char和wchar_t?

Mar*_*ner 8

我认为有一处is_same房产,所以

SplitIt(base, ext, fullFilePath, is_same<T, char>());
Run Code Online (Sandbox Code Playgroud)

应该管用.