markus@x4 tmp % cat test.ii
namespace poses
{
}
namespace utils
{
using namespace poses;
}
namespace poses
{
class J
{
public:
J ();
virtual void m_fn1 (int &p1, int);
};
class I : utils::J
{
};
class D
{
public:
virtual void m_fn1 (poses::I &) const;
void m_fn2 ()
{
I p;
m_fn1 (p);
}
};
class K : utils::J, public utils::D
{
};
struct F
{
K *operator->();
};
class N : public K
{
void m_fn1 (int &p1, int);
void m_fn1 (I &) const {}
};
class L;
struct M
{
L *operator->();
};
class L
{
public:
F poseChange;
};
class G
{
G ();
};
}
using namespace utils;
M h;
G::G () try
{
N f;
f.m_fn2 ();
throw;
}
A bit more reduced:
markus@x4 tmp % cat test.ii
namespace poses
{
}
namespace utils
{
using namespace poses;
}
namespace poses
{
class J
{
public:
J ();
virtual void m_fn1 (int &p1, int);
};
class I : utils::J
{
};
class D
{
public:
virtual void m_fn1 (poses::I &) const;
void m_fn2 ()
{
I p;
m_fn1 (p);
}
};
class K : utils::J, public utils::D
{
};
struct F
{
K *operator->();
};
class N : public K
{
void m_fn1 (int &p1, int);
void m_fn1 (I &) const {}
};
class L;
struct M
{
L *operator->();
};
class L
{
public:
F poseChange;
};
class G
{
G ();
};
}
using namespace utils;
M h;
G::G () try
{
N f;
f.m_fn2 ();
throw;
}
catch (int) {}
void fn1 () { h->poseChange- >m_fn2 (); }
markus@x4 tmp % g++ -c -O2 test.ii
test.ii:68:40: internal compiler error: Segmentation fault