I think this should just not exist in C++11 and instead be replaced by something like monitor<T> described by Herb Sutter [1]: