У меня есть устаревший код, который использует 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
?
ОБНОВЛЕНИЕ 2: использовано #if BOOST_VERSION ...
, так как не поступило никаких дополнительных мнений. Спасибо за помощь.