indexmap_storage_pair (const indexmap_type & IM, const storage_type & ST):
     indexmap_(IM),storage_(ST){
#ifdef TRIQS_ARRAYS_CHECK_IM_STORAGE_COMPAT
      if (ST.size() != IM.domain().number_of_elements()) 
       TRIQS_RUNTIME_ERROR<<"index_storage_pair construction : storage and indices are not compatible";
#endif
     }
 /// The storage is allocated from the size of IM.
 indexmap_storage_pair(const indexmap_type &IM) : indexmap_(IM), storage_() {
  storage_ = StorageType(indexmap_.domain().number_of_elements());
 }