So let's see what the WTFs basically are...
- Assigning a pointer generated from new to a type that is not a pointer
- Using delete on objects created with new and not new
- Using braces instead of brackets for trying to call the constructor of an object
- Returning a pointer pointing to what is supposed to be an array of pointers pointing to pointers (given the new and delete), even though the value being returned isn't of type pointer (which is a double-WTF because if it were to compile, that would still be retarded)
- using a lookup method of complexity O(n)
- Attempting to declare a return type without template arguments.
- Returning a nullptr in the case of not finding an entry, implying that the templated type is always a pointer.
- Method names begin with a capital letter
- not using std::map
- code doesn't even compile