Ошибка лягушки, нет жизнеспособного преобразования

У меня проблема с 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.

4

Решение

Если вы хотите использовать TCHAR Вы должны сделать каждый шаблон расширенным, чтобы использовать его, включая wstringstream вы на самом деле хотите basic_stringstream<TCHAR> или вы могли бы:

typedef std::basic_stringstream<TCHAR> tstringstream;
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]