I don't think anybody is seriously using std::rel_ops. Overloading of operator->*() is pretty rare too.
Nothing is really useless, though - C++ always had the policy of only adding features that are used by at least two unrelated people (which is why it's near impossible to truly deprecate anything. They want to remove operator++ for bools by 2014, and companies complain that it breaks their codebases)
I think that templates can be simplified for external declaration, but it will probrably not happen unless they change the next standard for example:
normally people inline it within the class:
1 2 3 4 5 6 7
template <typename t> class SomeClass
{
int SomeFunction()
{
return 0;
}
};
but when you declare the prototype inside the class then the implementation out side of the class it gets clunky, (this might be wrong):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
template <typename t> class SomeClass
{
int SomeFunction();
};
//explicit
template <typename t>
int SomeClass<t>::SomeFunction()
{
}
//rather than implicitly, eliminate the fat
int SomeClass<typename t>::SomeFunction()
{
}
typeof or __typeof__ is a common compiler extension to C. It is supported by GCC, Clang, Intel C, Sun Studio (as of version 12), IBM XLC, and quite likely others.