У меня есть некоторый устаревший код, который использует boost :: filesystem в версии 1.34.1.Я выделил его в небольшую тестовую программу:
#include <iostream>
#include <boost/filesystem/path.hpp>
int main()
{
// note the second parameter
boost::filesystem::path p( "/tmp/foo", boost::filesystem::native );
std::cout << p.string() << std::endl;
return 0;
}
Когда я пытаюсь скомпилировать этот код с текущей (1.46.1) версией Boost, я получаю следующую ошибку:
test.cpp: In function ‘int main()’:
test.cpp:7: error: invalid conversion from ‘bool (*)(const std::string&)’ to ‘void*’
test.cpp:7: error: initializing argument 2 of ‘boost::filesystem3::path::path(const Source&, typename boost::enable_if<boost::filesystem3::path_traits::is_pathable<typename boost::decay<T>::type>, void>::type*) [with Source = char [9]]’
Я пытался сделать заголовки или хвосты документации Boost, но я не могу понять, для чего этот второй параметр хорош или чем его заменить.Кто-нибудь может пролить свет на это?
ОБНОВЛЕНИЕ: Я не совсем понял требования.Как минимум, для переходного периода мне придется поддерживать обе версии (1.34.1 и 1.46.1).Есть ли совместимый способ покрыть обе версии Boost одним и тем же кодом, или мне придется прибегнуть к #if BOOST_VERSION
magic?
UPDATE 2: Используется #if BOOST_VERSION ...
, так как больше нетмнение было предстоящее.Спасибо за помощь.