title: Boost regex runtime error
body: <p>I'm trying to use some code that I wrote on another computer that splits a string into tokens. This code compiles fine. The code also works as intended on some other computers. I've managed to reduce the code down to the following:</p>
  
  <pre><code>#include &lt;string&gt;
  #include &lt;boost/regex.hpp&gt;
  
  typedef std::vector&lt;std::string&gt; token_t ;
  
  token_t generate_tokens(std::string raw_input){ 
  //this function breaks a input string into tokens. So test 100 goes to 2 tokens "test" and "100".
  
      boost::regex re_splitter("\\s+"); //this uses the regex \s+ to find whitespace. The + finds one or more whitespace characters.
  
      boost::sregex_token_iterator iter(raw_input.begin(), raw_input.end(), re_splitter, -1);
      //this breaks the string using the regex re_splitter to split into tokens when that is found. 
      boost::sregex_token_iterator j; //This is actually in the Boost examples, j is the equivalent of end. Yes this did also seem weird to me at first...
  
      token_t token_vector;
      unsigned int count = 0;
      while(iter != j)
      {
          token_vector.push_back(*iter);
          std::cout &lt;&lt; *iter++ &lt;&lt; std::endl;
          ++count;
      }
      return token_vector;
  }
  
  int main(){
      std::string in;
      int amount = -1;
  
      std::cout &lt;&lt; "action: ";
      std::getline(std::cin, in);
  
      boost::regex EXPR("^test \\d*(\\.\\d{1,2})?$");
      bool format_matches = boost::regex_match(in, EXPR);
  
      token_t tokens = generate_tokens(in);
  
      if(format_matches){
          amount = atoi(tokens.at(1).c_str());
      }
      std::cout &lt;&lt; "amount: " &lt;&lt; amount &lt;&lt; "\n";
      return 0;
  }
  </code></pre>
  
  <p>This compiles without errors or warnings using: <code>g++ -Wall test.cpp -lboost_regex</code>
  but when used at runtime providing the input <code>test 100</code> the program fails.</p>
  
  <blockquote>
    <p>action: test 100</p>
    
    <p>a.out: /usr/local/include/boost/smart_ptr/shared_ptr.hpp:412: typename boost::detail::shared_ptr_traits::reference boost::shared_ptr::operator*() const [with T = boost::regex_traits_wrapper > >]: Assertion `px != 0' failed.</p>
    
    <p>Aborted</p>
  </blockquote>
  
  <p>I'm completely lost as to what is going on here. Is this a bug in in my code or in the library? Any advice for debugging this is greatly appreciated!</p>