#include <map>
#include <boost/container/small_vector.hpp>

using boost::container::small_vector;

struct mystruct {
   mystruct& operator=(const mystruct& other) {
      i = other.i;
      sv = other.sv;

      return *this;
   }

   int i;
   small_vector<float, 8> sv;
};

typedef std::map<int, mystruct> mymap;
typedef std::map<int, small_vector<mystruct, 8> > mymap2;
typedef std::map<int, small_vector<small_vector<float, 8>, 8> > mymap3;

int main()
{
   mymap m;
   mystruct& sv = m[0];

   mymap2 m2;
   small_vector<mystruct, 8>& sv2 = m2[0];

   mymap3 m3;
   small_vector<small_vector<float, 8>, 8>& sv3 = m3[0];
}
