The Eclipse CDT tool (http://www.eclipse.org/cdt/) would seem to match your requirements.
It has rename facilities, and a number of other refactoring operations.
It is open source itself, so you can use it as you like on open (or closed source).
I doubt its refactoring is semantically correct in a narrow sense. C++ is an extremely complex language and changing it is difficult to do accurately under all circumstances (consider renaming of some templated class whose definition depends on a complex template instantiation). That said, I think the CDT refactoring machinery is based on carefully constructed progam parsing, analysis and transformations implemented using compiler-like methods; it is not "a plaintext find/replace".
I have no personal experience with this tool. However, I do build program transformation tools as a living, including those that transform C++ (but would not be a legitimate answer to the "available refactoring tool" or "free to use on open source" requirements). Having a keen interest in the technology behind such tools, I have personally visited and talked to the people that work on the refactoring aspects of the CDT (Peter Sommerlad's team), and have great respect for their skills in building such tools.