
I find myself creating this class member: compressed_pair< storage , compressed_pair< Lookup , compressed_pair< GetUnstored , SetUnstored > > > members; I imagine this sort of usage is pretty common. The problem is that it's hard to initialize this member efficiently: you have to build and copy too many compressed_pairs. I propose to extend compressed_pair with overloaded ctors, as follows: compressed_pair( first_param_type f , typename second_type::first_param_type sf , typename second_type::second_param_type ss); compressed_pair( first_param_type f , typename second_type::first_param_type sf , typename second_type::second_type::first_param_type ssf , typename second_type::second_type::second_param_type sss ); ... etc. If SFINAE doesn't take out these declarations when the second type is not a (compressed_)pair, we can always template them. Thoughts? -- Dave Abrahams Boost Consulting www.boost-consulting.com