boost :: split deixa tokens vazios no início e no final da string - esse comportamento é desejado?

Desde que eu não consegui encontrar nada sobre isso nodocumentação, Eu pensei em perguntar aqui. Eu tenho o seguinte programa (C ++ 11):

<code>#include <iostream> 
#include <boost/algorithm/string.hpp>

using namespace std;
using namespace boost;

int main () {
    string tmp = " #tag #tag1#tag2  #tag3 ####tag4   ";
    list<iterator_range<string::iterator> > matches;
    split( matches, tmp, is_any_of("\t #"), token_compress_on );

    for( auto match: matches ) {
            cout << "'" << match << "'\n";
    }
}
</code>

A saída é:

<code>''
'tag'
'tag1'
'tag2'
'tag3'
'tag4'
''
</code>

Eu teria pensado que otoken_compress_on opção remove todos os tokens vazios. A solução é, por exemplo, usarboost::trim_if. No entanto, eu queria saber se esse é o comportamento desejado de boost :: split e por que isso está acontecendo?

(g ++ 4.6.3, aumento 1.48)

questionAnswers(3)

yourAnswerToTheQuestion