Here's some code that has been compiling till at least 1.50, and starting long before. I isolated the part that breaks to create a program.
Here it is: Just taking a std::vector of int and copying into strings.
#include <boost/lexical_cast.hpp>
#include <vector>
#include <string>
using namespace std;
int main (int, char **) {
vector<int> values;
vector<string> ret;
std::transform(values.begin(), values.end(), ret.begin(), boost::lexical_cast<std::string, int>);
}
And compiling on fedora 18, gcc 4.7 (Got same issues, I believe, with MSVC 10) I get the output at the bottom.
Anyone has an idea on what the problem could be?
Thanks,
[aleblanc@localhost base]$ gcc -c TestLexicalCast.cc
[aleblanc@localhost base]$ gcc -c -I/home/aleblanc/local/boost_1_53/include/ TestLexicalCast.cc
TestLexicalCast.cc: In function ‘int main(int, char**)’:
TestLexicalCast.cc:10:98: error: no matching function for call to ‘transform(std::vector<int>::iterator, std::vector<int>::iterator, std::vector<std::basic_string<char> >::iterator, <unresolved overloaded function type>)’
TestLexicalCast.cc:10:98: note: candidates are:
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/algorithm:63:0,
from /home/aleblanc/local/boost_1_53/include/boost/utility/swap.hpp:24,
from /home/aleblanc/local/boost_1_53/include/boost/swap.hpp:10,
from /home/aleblanc/local/boost_1_53/include/boost/array.hpp:45,
from /home/aleblanc/local/boost_1_53/include/boost/lexical_cast.hpp:158,
from TestLexicalCast.cc:1:
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algo.h:4940:5: note: template<class _IIter, class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation)
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algo.h:4940:5: note: template argument deduction/substitution failed:
TestLexicalCast.cc:10:98: note: could not resolve address from overloaded function ‘lexical_cast<std::string, int>’
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/algorithm:63:0,
from /home/aleblanc/local/boost_1_53/include/boost/utility/swap.hpp:24,
from /home/aleblanc/local/boost_1_53/include/boost/swap.hpp:10,
from /home/aleblanc/local/boost_1_53/include/boost/array.hpp:45,
from /home/aleblanc/local/boost_1_53/include/boost/lexical_cast.hpp:158,
from TestLexicalCast.cc:1:
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algo.h:4977:5: note: template<class _IIter1, class _IIter2, class _OIter, class _BinaryOperation> _OIter std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algo.h:4977:5: note: template argument deduction/substitution failed:
TestLexicalCast.cc:10:98: note: could not resolve address from overloaded function ‘lexical_cast<std::string, int>’
[aleblanc@localhost base]$