Работая с Poco::Path
, я обнаружил очень любопытную ошибку. См. следующий код:
#include <iostream>
#include <string>
#include <Poco/Path.h>
int main()
{
std::wstring a_path = L"c:\\temp";
//Poco::Path from_wstring(a_path); // ERROR: fails to compile, expected
Poco::Path from_wchar_t(a_path.c_str()); // compiles... unexpected
std::cout << from_wchar_t.toString() << std::endl;
return 0;
}
Но вывод вышеуказанной программы (в Windows):
\
вместо ожидаемого:
с:\темп
Просматривая документацию Poco::Path
, я не вижу конструктора, ожидающего std::wstring
(поэтому первый путь терпит неудачу) или const wchar_t*
, только от std::string
и const char*
(оба UTF-8).
Как это компилируется с const wchar_t*
и почему неожиданный вывод (неправильный путь)?