diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.robertl/eb109.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.robertl/eb109.C | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C new file mode 100644 index 000000000..f34907626 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C @@ -0,0 +1,75 @@ +// { dg-do assemble } +#include<map> +#include<iostream> +#include<vector> +#include<string> + +using namespace std; + +// empty parameter class with a minimal set of operations +// if there are no weights for edges necessary +struct Empty +{ + public: + Empty(int=0) {} + bool operator<(const Empty&) const { return true;} +}; +inline ostream& operator<<(ostream& os, const Empty&) { return os;} +inline istream& operator>>(istream& is, Empty& ) { return is;} + + +template<class VertexType, class EdgeType> +class Graph // { dg-message "note" } candidates +{ + public: + // public type interface + typedef std::map<int, EdgeType > Successor; + typedef std::pair<VertexType, Successor> vertex; + typedef std::vector<vertex> GraphType; + typedef typename GraphType::iterator iterator; + typedef typename GraphType::const_iterator const_iterator; + + // a lot of stuff deleted .... + + private: + bool directed; + GraphType C; // container + ostream* pOut; +}; + +// all graph-methods delet +template<class VertexType, class EdgeType> +ostream& operator<<(ostream& os, Graph<VertexType,EdgeType>& G) +{ + // display of vertices with successors + for(int i = 0; i < G.size(); ++i) // { dg-error "no member" } no size function + { + os << G[i].first << " <"; // { dg-error "no match" } no index operator + + // The compiler does not like this line!!!!!! + typename Graph<VertexType, EdgeType>::Successor::iterator + startN = G[i].second.begin(), // { dg-error "no match" } no index operator + endN = G[i].second.end(); // { dg-error "no match" } no index operator + + while(startN != endN) + { + os << G[(*startN).first].first << ' ' // { dg-error "no match" } no index operator + << (*startN).second << ' '; + ++startN; + } + os << ">\n"; + } + return os; +} + +int main() +{ + // no edge weighting, therefore type Empty: + Graph<std::string, Empty> V(true); // { dg-error "no match" } no bool constructor + // { dg-message "candidate" "candidate note" { target *-*-* } 68 } + // ReadGraph(V, "gra1.dat"); + + // display of vertices with successors + cout << V; + +} |