|
Boost : |
From: jsiek_at_[hidden]
Date: 2000-01-27 22:21:21
Dave Abrahams writes:
>
> First of all, is there really a conflict? A function called set() doesn't
> conflict with a class template called set<>, does it? Can you show an
> example where the conflict occurs?
I'm not totally sure what the standard says about this... from 3.3.7
I think that the function name is suppose to hide the class name.
However, with g++ 2.91.66, for this code:
template <class Edge, class Graph, class Weight, class Distance,
class BinaryOperator, class Vertex>
bool _relax(Edge e, Graph& g, Weight w, Distance d, BinaryOperator op,
Vertex)
{
Vertex u = source(e,g), v = target(e,g);// incident would be nicer
if (op(get(d,u), get(w,e)) < get(d,v)) {
set(d, v, op(get(d,u), get(w,e)));
return true;
} else
return false;
}
I get this error:
/usr/people/jsiek/tlc/ggcl/devel/contrib/new_ggcl/ggcl/relax.hpp:21: use of class template `template <class Key, class Compare = struct less<T>, class Alloc = class alloc> set<Key,Compare,Alloc>' as expression
Whenever client code does this:
#include <set>
#include <ggcl/relax.hpp>
>
> Second of all, can't people put their property accessors in their *own*
> namespace?
They can as long as I used the unqualified name "set", but they can't
if I use "boost::set". But the unqualified name is more dangerous,
as above.
Ciao,
Jeremy
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk