dcbd43e030
2000-09-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr> * g++.old-deja/g++.other/crash20.C: Make ready for libstdc++-v3. * g++.old-deja/g++.pt/ttp62.C: Same. * g++.old-deja/g++.other/inline14.C: Same. From-SVN: r36633
50 lines
736 B
C
50 lines
736 B
C
// Build don't link:
|
|
// Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
|
|
|
#include <iostream>
|
|
|
|
struct IDENT
|
|
{
|
|
enum TYPE { Variable, Constant } type;
|
|
|
|
std::ostream& printTo(std::ostream& out) const
|
|
{
|
|
switch (type)
|
|
{
|
|
case Variable:
|
|
out << '_';
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return out;
|
|
}
|
|
};
|
|
|
|
|
|
template <class T>
|
|
struct TC
|
|
{
|
|
IDENT i;
|
|
|
|
const IDENT& getIdent() const
|
|
{
|
|
return i;
|
|
}
|
|
};
|
|
|
|
template <class T>
|
|
inline std::ostream& operator<< (std::ostream& out, const TC<T> &c)
|
|
{
|
|
c.getIdent().printTo(out);
|
|
return out;
|
|
}
|
|
|
|
void foo(const TC<IDENT> &c)
|
|
{
|
|
std::cerr << c
|
|
<< ": " // This line is crucial!
|
|
<< c
|
|
<< std::endl;
|
|
}
|