tags:

views:

121

answers:

2

I have the following code snippet. I am compiling using the sun studio 12 compiler and have tried boost 1.33 and 1.39

#include <boost/algorithm/string.hpp>
#include <string>
#include <vector>

using namespace boost;
using namespace std;


int main(int argc, char* argv[])
{

    string exbyte = "0x2430";
    string exbytes = "0x2430,2430";
    typedef vector< string > SplitVec;

    SplitVec res1 ;
    split(res1 , exbyte, is_any_of(",") );
    return 0
}

I get the following compile error: "/bb/source/boost/boost_1_39_0/boost/algorithm/string/iter_find.hpp", line 175: Error, nomatchoverin: Could not find a match for std::vector::vector(boost::transform_iterator, boost::algorithm::split_iterator, boost::use_default, boost::use_default>, boost::transform_iterator, boost::algorithm::split_iterator, boost::use_default, boost::use_default>) needed in boost::algorithm::iter_split, std::string, boost::algorithm::detail::token_finderF>>(std::vector&, std::string &, boost::algorithm::detail::token_finderF>)

If anybody has thoughts on this that would be awesome. Since I am cotemplateing strtok(only kidding)

+2  A: 

Other than the missing semi-colon after return 0, which I assume is an unrelated typo, your code compiles fine for me, using gcc 4.3.2.

According to the documentation for boost::split, you're using the function correctly, so I don't think this is a coding error. Are you sure you have boost installed correctly?

Edit: It may be that Boost doesn't support your particular compiler, so parts of boost may not work for you. See here for a list of supported compilers, along with various issues which affect each compiler.

Charles Salvia
Perhaps you should post the boost version, too, if it matters.
schnaader
The boost version I compiled it with was 1.34.1
Charles Salvia
It has to be the compiler. And i don't have the ability to change away. So I guess its strtok then.
Pradyot
You are a brave man.
Charles Salvia
+2  A: 

It sounds like your compiler's STL implementation only provides a vector ctor taking vector::iterator's and not any iterator class. You can verify this by taking a look at the vector header file.

You may able to work around this by using STLPort which apparently can be used with Sun Studio 12.

jon hanson