我遇到了clang 3.1的问题。GCC 4.2 不会出现此特定问题。以下是发生的错误的示例:
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string>
typedef unsigned short char16_t;
typedef char16_t TCHAR;
typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > wstringT;
template<class T>
inline wstringT MyTestFunction(const T& source)
{
std::wstringstream out;
out << source ;
return out.str(); // error occurs here
};
错误消息指出:
No viable conversion from '__string_type' (aka 'basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >') to 'wstringT' (aka 'basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> >')
代码使用编译器标志 -fshort-wchar 编译,它应该将 wchar_t 转换为 16 位无符号短整型。我正在 XCode v4.3.2 上编译代码。