[Seqan-dev] Failed to create ticket on trac: concatenator iterator problems


My ticket was rejected as spam so I'm posting it here:

I think the difference between the end and the begin iterators of an infix in a ConcatenatorManyToOne object should equal the length. The length reports 4 which is correct. The difference does not equal 4. I'm using svn revision 10211.


{{{
#include <seqan/sequence.h>
#include <stdexcept>

using namespace seqan;

typedef String< Dna5 >                        string_t;
typedef StringSet< string_t >                 string_set_t;
typedef ConcatenatorManyToOne< string_set_t > concatenator_t;
typedef Infix< concatenator_t >::Type         infix_t;

int
main( int argc, char * argv [] ) {
    string_set_t seqs;
    appendValue( seqs, string_t( "ACGT" ) );
    concatenator_t concat( seqs );
    infix_t in( concat, 0, 4 );
if( 4 != length( in ) ) throw std::logic_error( "length() not working." ); if( difference( begin( in ), end( in ) ) != length( in ) ) throw std::logic_error( "difference() not working." );
    return 0;
}

}}}