thrift/concurrency/Mutex.h defines global macros Guard and RWGuard. Although the purpose is well commented and appreciated - i.e. trying to prevent coders from creating temporary variables and falsely assuming they have a lock - this code does interfere with other packages that define their own Guard classes. Even when the user/library define Guard in their own namespace, there's a clash.
Please remove the macros.