New keyword proposal to allow inheritance at compile-time. Ex:
template <typename T>
struct container
{
static_virtual T * begin() {...}
static_virtual T * end() {...}
static_virtual T * rbegin() {...}
static_virtual T * rend() {...}
};
template <typename T>
struct list : container<T>
{
static_virtual T * begin() {...}
static_virtual T * end() {...}
static_virtual T * rbegin() {...}
static_virtual T * rend() {...}
};
template <typename T>
ostream & ostream(ostream & out, container<T> const & c)
{
for (auto i = c.begin(); i != c.end(); ++ i)
out << * i << endl;
return out;
}
int main()
{
list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(3);
cout << l << endl;
}
Regards,