I am using bundled properties: 

typedef unsigned position_type;

template<typename T>
class POS
{
public:
...
};

template<typename T>
struct LEN
{
T len_sq;
};

typedef POS<position_type> POSITION;
typedef LEN<position_type> LENGTH;

typedef adjacency_list<vecS, vecS, bidirectionalS, POSITION, LENGTH> DG;

typedef graph_traits<DG>::vertex_descriptor Vertex;
typedef graph_traits<DG>::edge_descriptor Edge;

...and I am calling add_edge() like this [from within the graph class so (*this) resolves to the graph object]: 

LENGTH l;
l.len_sq = whatever;
e01 = add_edge(v0, v1, l, *this);

The g++ compiler is punishing me with huge error reports that say: 

../main.cpp: In constructor ‘DelaunayGraph<T>::DelaunayGraph(const int&, const int&) [with T = unsigned int]’:
../main.cpp:126:   instantiated from here
../main.cpp:101: error: no match for ‘operator=’ in ‘((DelaunayGraph<unsigned int>*)this)->DelaunayGraph<unsigned int>::e01 = boost::add_edge [with Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, Config = boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::bidirectionalS, boost::property<boost::vertex_bundle_t, POS<unsigned int>, boost::no_property>, boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>, boost::no_property, boost::listS>::config, Base = boost::bidirectional_graph_helper_with_property<boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::bidirectionalS, boost::property<boost::vertex_bundle_t, POS<unsigned int>, boost::no_property>, boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>, boost::no_property, boost::listS>::config>](((DelaunayGraph<unsigned int>*)this)->DelaunayGraph<unsigned int>::v0, ((DelaunayGraph<unsigned int>*)this)->DelaunayGraph<unsigned int>::v1, ((const boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>&)(& boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>(((const LEN<unsigned int>&)((const LEN<unsigned int>*)(& l)))))), ((boost::vec_adj_list_impl<boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::bidirectionalS, boost::property<boost::vertex_bundle_t, POS<unsigned int>, boost::no_property>, boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>, boost::no_property, boost::listS>::config, boost::bidirectional_graph_helper_with_property<boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::bidirectionalS, boost::property<boost::vertex_bundle_t, POS<unsigned int>, boost::no_property>, boost::property<boost::edge_bundle_t, LEN<unsigned int>, boost::no_property>, boost::no_property, boost::listS>::config> >&)(&((DelaunayGraph<unsigned int>*)this)->DelaunayGraph<unsigned int>::<anonymous>.boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, POS<unsigned int>, LEN<unsigned int>, boost::no_property, boost::listS>::<anonymous>)))’
/usr/include/boost/graph/detail/edge.hpp:35: note: candidates are: boost::detail::edge_desc_impl<boost::bidirectional_tag, unsigned int>& boost::detail::edge_desc_impl<boost::bidirectional_tag, unsigned int>::operator=(const boost::detail::edge_desc_impl<boost::bidirectional_tag, unsigned int>&)
make: *** [main.o] Error 1

Yow. It doesn't like the LENGTH param. What can I do? I tried adding an assignment operator and copy constructor, no go. What am I doing wrong?

Eric