________________________________
Date: Tue, 19 Jul 2011 13:48:16 +0800 From: tongari95@gmail.com To: boost-users@lists.boost.org Subject: Re: [Boost-users] invalid conversion from 'bool
2011/7/19 Eric Lin <kingdavid1@w.cn<mailto:kingdavid1@w.cn>>
Dear Advanced c/g++ on boost programers:
I have copied and testd a simple (Copy a file with Boost) program from page 372, Example10-10, book(C++ cookbook) but I got compile error ----------------------------- eric@eric-laptop:~/cppcookbook/ch10$ g++ Example10-10.cpp Example10-10.cpp: In function ‘int main(int, char**)’: Example10-10.cpp:17:47: error: invalid conversion from ‘bool (*)(const std::string&)’ to ‘boost::enable_if_c<true, void>::type*’ Example10-10.cpp:17:47: error: initializing argument 2 of ‘boost::filesystem3::path::path(const Source&, typename boost::enable_if<boost::filesystem3::path_traits::is_pathable<typename boost::decay<Source>::type> >::type*) [with Source = char*, typename boost::enable_if<boost::filesystem3::path_traits::is_pathable<typename boost::decay<Source>::type> >::type = void]’ Example10-10.cpp:18:47: error: invalid conversion from ‘bool (*)(const std::string&)’ to ‘boost::enable_if_c<true, void>::type*’ Example10-10.cpp:18:47: error: initializing argument 2 of ‘boost::filesystem3::path::path(const Source&, typename boost::enable_if<boost::filesystem3::path_traits::is_pathable<typename boost::decay<Source>::type> >::type*) [with Source = char*, typename boost::enable_if<boost::filesystem3::path_traits::is_pathable<typename boost::decay<Source>::type> >::type = void]’
----------------------------- This is my program, you can download and test by your self from http://examples.oreilly.com/9780596007614/ ----------------------------------------------------- // Example 10-10. Copying a file with Boost #include <iostream> #include <string> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/fstream.hpp> #include <boost/filesystem/path.hpp>
using namespace std; using namespace boost::filesystem;
int main(int argc, char** argv) {
// Parameter checking...
try { // Turn the args into absolute paths using native formatting path src = complete(path(argv[1], native)); path dst = complete(path(argv[2], native)); copy_file(src, dst); } catch (exception& e) { cerr << e.what() << endl; }
return(EXIT_SUCCESS); } ---------------------------------------------------------------------------- I ever check around web, there is some suggestion ask me to get rid native, but in my test/system, it only generate more errors. my boost version probably is 1.46.1 and I am on g++ 4.5.2 and Ubuntu10.04/linuxKernel2.6.35-25 Need and thanks your help a lot in advance, Eric
Removing the "native" does work well for me, what are the errors you saw then? Link errors? You must link against the boost filesystem & system lib.
Thanks your reply, but how to (link against the boost filesystem & system lib)? I am on linux/g++ these are errors I got, after I eliminate native ---------------- eric@eric-laptop:~/cppcookbook/ch10$ g++ -lboost_system Example10-10.cpp /tmp/ccF2cJsO.o: In function `boost::filesystem3::path::codecvt()': Example10-10.cpp:(.text._ZN5boost11filesystem34path7codecvtEv[boost::filesystem3::path::codecvt()]+0x7): undefined reference to `boost::filesystem3::path::wchar_t_codecvt_facet()' /tmp/ccF2cJsO.o: In function `boost::filesystem3::complete(boost::filesystem3::path const&)': Example10-10.cpp:(.text._ZN5boost11filesystem38completeERKNS0_4pathE[boost::filesystem3::complete(boost::filesystem3::path const&)]+0x2d): undefined reference to `boost::filesystem3::absolute(boost::filesystem3::path const&, boost::filesystem3::path const&)' /tmp/ccF2cJsO.o: In function `boost::filesystem3::copy_file(boost::filesystem3::path const&, boost::filesystem3::path const&)': Example10-10.cpp:(.text._ZN5boost11filesystem39copy_fileERKNS0_4pathES3_[boost::filesystem3::copy_file(boost::filesystem3::path const&, boost::filesystem3::path const&)]+0x24): undefined reference to `boost::filesystem3::detail::copy_file(boost::filesystem3::path const&, boost::filesystem3::path const&, boost::filesystem3::copy_option::enum_type, boost::system::error_code*)' /tmp/ccF2cJsO.o: In function `boost::filesystem3::initial_path()': Example10-10.cpp:(.text._ZN5boost11filesystem312initial_pathEv[boost::filesystem3::initial_path()]+0x18): undefined reference to `boost::filesystem3::detail::initial_path(boost::system::error_code*)' collect2: ld returned 1 exit status eric@eric-laptop:~/cppcookbook/ch10$ ------------------- looking to see any expert's help again and thank a lot in advance, Eric
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users