Здравствуйте, _Winnie, Вы писали:
_W>Когда я вызываю _W>WideToUTF8(L"hello", s) _W>то вызывается версия которая принимает указатель, а не ссылку на массив. Почему?
Наверно потому что нешаблонная функция имеет преимущество перед шаблонной.
оффтоп (злостный)
сейчас возник экспромт связанный с твоим ником: in Winnie veritas
Re: строковый литерал - массив, указатель, шаблон функции
Здравствуйте, _nn_, Вы писали:
__>Баг VC. __>В VC 8.0 тоже он есть __>Об этом писали на форуме.
Почему баг?
У обоих функций точное соответствие, при этом предпочтение отдается нешаблонной, как сказал korzhik.
См. 13.3.3.1.1/3 табл. 9, Array-to-pointer conversion имеет rank — Exact Match.
Вроде так...
Как исправить? Сделать обе шаблонными?
Re[2]: строковый литерал - массив, указатель, шаблон функции
Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, korzhik, Вы писали:
K>>оффтоп (злостный) K>>сейчас возник экспромт связанный с твоим ником: in Winnie veritas
Н>Это "Истиина в словах Винни" штоль ?
ну типа того
Re[3]: строковый литерал - массив, указатель, шаблон функции
Здравствуйте, shank, Вы писали:
S>Здравствуйте, _nn_, Вы писали:
__>>Баг VC. __>>В VC 8.0 тоже он есть __>>Об этом писали на форуме.
S>Почему баг? S>У обоих функций точное соответствие, при этом предпочтение отдается нешаблонной, как сказал korzhik. S>См. 13.3.3.1.1/3 табл. 9, Array-to-pointer conversion имеет rank — Exact Match. S>Вроде так...
Для функции, которая получает ссылку, нет вообще никакого преобразования и она проигрывает ?
S>Как исправить? Сделать обе шаблонными?
В VC следущий код не работает правильно:
void f(const char (&a)[2]){}
void f(const char* a){}
f("a"); // error C2668: 'f' : ambiguous call to overloaded function :maniac:
Здравствуйте, _Winnie, Вы писали:
_W>Когда я вызываю _W>WideToUTF8(L"hello", s) _W>то вызывается версия которая принимает указатель, а не ссылку на массив. Как исправить?
возможно тебе тут надо решение подобное boost.range
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, _Winnie, Вы писали:
_W>>Когда я вызываю _W>>WideToUTF8(L"hello", s) _W>>то вызывается версия которая принимает указатель, а не ссылку на массив. Как исправить?
K>возможно тебе тут надо решение подобное boost.range
кстати оказалось что boost::range для литералов вызывает strlen. печально
Re[6]: строковый литерал - массив, указатель, шаблон функции
Здравствуйте, _nn_, Вы писали:
__>Я неправильно понял вашу идею сначала
А теперь я ее не понял
Почему компилится как я показал раньше, но не компилится так?
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, korzhik, Вы писали:
K>>Здравствуйте, _Winnie, Вы писали:
_W>>>Когда я вызываю _W>>>WideToUTF8(L"hello", s) _W>>>то вызывается версия которая принимает указатель, а не ссылку на массив. Как исправить?
K>>возможно тебе тут надо решение подобное boost.range
K>кстати оказалось что boost::range для литералов вызывает strlen. печально
А что если предложить улучшение boost.range ?
Или нет переносимого решения раз не реализовали ?
"_Winnie" <23256@users.rsdn.ru> wrote in message news:1782668@news.rsdn.ru... >... > Когда я вызываю > WideToUTF8(L"hello", s) > то вызывается версия которая принимает указатель, а не ссылку на массив. Почему? Как исправить?
Здравствуйте, shank, Вы писали:
S>Здравствуйте, _nn_, Вы писали:
__>>Я неправильно понял вашу идею сначала S>А теперь я ее не понял S>Почему компилится как я показал раньше, но не компилится так?
S>
"bolshik" <29601@users.rsdn.ru> wrote in message news:1783194@news.rsdn.ru... > Здравствуйте, rg45, Вы писали: > > а что означает использование символа 'L' в следующей строке? >
> WideToUTF8(L"Hello", out);
>
Это означает, что каждый символ этого строкового литерала имеет размер два байта (unicode)
Posted via RSDN NNTP Server 1.9
--
Справедливость выше закона. А человечность выше справедливости.
Re[4]: строковый литерал - массив, указатель, шаблон функции
Здравствуйте, rg45, Вы писали:
R>Это означает, что каждый символ этого строкового литерала имеет размер два байта (unicode)
правильно я понимаю, что это относится только к строковым литералам?
Не поделишься ссылкой, где можно почитать, что еще можно применять к строковым литералам?