строковый литерал - массив, указатель, шаблон функции
От: _Winnie Россия C++.freerun
Дата: 14.03.06 18:35
Оценка:
void WideToUTF8(wchar_t const *input, size_t size, std::string &out); //спрятана в .cpp файле.

inline void WideToUTF8(const std::wstring &str, std::string &out) 
{
    WideToUTF8(str.data(), str.size(), out);
}

template <int N>
inline void WideToUTF8(wchar_t const (&string_literal)[N], std::string &out)
{
    WideToUTF8(string_literal, N-1, out);
}

inline void WideToUTF8(wchar_t const *input, std::string &out) 
{
    WideToUTF8(input, wcslen(input), out);
}


Когда я вызываю
WideToUTF8(L"hello", s)
то вызывается версия которая принимает указатель, а не ссылку на массив. Почему? Как исправить?
Правильно работающая программа — просто частный случай Undefined Behavior
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.