C++
The more I use it, the more I feel that C++ was never really made to be “user friendly.” Now, regardless of all the compiler options, the intermediate objects, linking and all the various errors that can occur because of all those things, the language itself strikes me as one of those things that was occasionally, well, just not well thought out.
This is the code snippet that made me think this today:
template <const char *EventName, typename DataType>
class EventType
{
// etc...
};
typedef EventType< "TypeName", MyDataType> MyType; // This is illegal.
Now, the reason this can’t be done is because the string needs “external linkage”, which means you have to declare it as a variable before hand. Except that the VC compiler doesn’t accept that either. It’s just one of those oversights that makes me go… WTF?