1template <class T> struct static_abort {};
2
3template <class E>
4struct any
5{
6  const E& self() const { return static_cast<const E&>(*this); }
7};
8
9struct range : public any<range>
10{
11  range() {}
12
13  template <class U>
14  range(const U&)
15  {
16    typedef typename static_abort<U>::ret t;
17  }
18};
19
20int main()
21{
22  const any<range>& r = *new range();
23  r.self();
24}
25