char_type operator[](comp_char_type c) const {
     if (m_strat->m_char.size() > 0) {  // if alphabet is not continuous
         return (char_type) m_strat->m_char_select(((size_type)c)+1);
     } else { // direct map if it is continuous
         return (char_type) c;
     }
 }
 comp_char_type operator[](char_type c) const
 {
     if (m_strat->m_char.size() > 0) {  // if alphabet is not continuous
         if ( c >= m_strat->m_char.size() or !m_strat->m_char[c] )
             return (comp_char_type)0;
         return (comp_char_type) m_strat->m_char_rank((size_type)c);
     } else { // direct map if it is continuous
         if ( c >= m_strat->m_sigma )
             return 0;
         return (comp_char_type) c;
     }
     return 0;
 }