Hi,

this is a somewhat general C++ question, but I'm specifically concerned about a Boost class in this case.

How do I declare a boost::disjoint_sets<Rank, Parent, FindCompress> variable without some kind of automatic template deduction?  Usually I see such classes declared taking their template parameters from within a function such as:

template <typename Rank, typename Parent>
void foo(Rank rank, Parent parent)
{
    disjoint_sets<Rank, Parent> dset;
}

but what if I want to declare dset at file scope?  I've been trying to manually construct the Rank and Parent types, but it's slightly doing my head in and the iterator_property_map example seems to be stale.

Is there a general C++ technique or a Boost-specific one that can help me out here?  Or is it just a matter of laboriously building up the typedefs?  Thanks, cheers.

Jeremy