Back when I worked in professional game development, STL was too immature and bloated. But that was >10 years ago.
Now I work in military simulation, which has even tougher performance requirements (like the framerate can never go below some FPS). In military simulation STL is used all over the place.
Some of the people who tell you not to use STL use the argument that it’s not always the perfect or even the best solution to the problem. But that isn’t an answer to the question. The question should be: Is there something inherently wrong with using STL in games? I’d say no, STL is most of the time a better implementation than what a user would come up with on their own.
Just make sure you know how to use the STL, and use it in your game. Read some books and look at the implementation code in the STL you are using.
I would say that, off the top of my head, it is a better idea to use the STL unless you know exactly why you don’t want to use it.
Here’s the thing about the STL: it is developed by people who are smarter than you are. That’s not intended to be offensive or anything, it’s just that the STL is developed by people whose work is actually building the STL. It’s going to be about as practically fast as the platform can allow and will generally be much more robust than a home-rolled solution (and this should be as much of a concern if not more than worrying about raw speed–because your game needs robustness a good bit more than you need speed; the latter is meaningless without the former).
The complaints that the STL enforces a “narrow view of the world” strike me as a little silly. They’re containers. They have a limited set of operations because containers have limited sets of operations. What are you doing that doesn’t jibe with this?
I’ve seen very few reasons not to use the STL for games.
For the memory allocation issues, many people don’t know this but you can write custom allocators for your STL container classes. Allocators are basically policy classes you pass into your templates to determine how allocations are performed. Using these you can usually work around whatever memory issues are problematic on your platform of choice.
Of course, if you’re using the STL and doing dumb things like maps of strings to large, non-pointer types, then you have bigger problems on your hand.