This happens due to the reason I wrote in stl_logging.h.
We don't need utilities.h (which includes logging.h) so we can just
remove it.
git-svn-id: https://google-glog.googlecode.com/svn/trunk@105
eb4d4688-79bd-11dd-afb4-
1d65580434c0
// using ::operator<<;
//
// to fix these errors.
+//
+//
+// Notice for clang users: you should include stl_logging.h BEFORE you
+// include logging.h. Otherwise, you will see some errors when you use
+// CHECK with STL containers.
+//
+// Clang's "using ::operator<<" incorporate symbols which are declared
+// before the using keyword. With GCC, symbols defined after the using
+// keyword are incorporated as well. The CHECK macro defined in
+// logging.h uses the using keyword so you need to include logging.h
+// after including stl_logging.h.
+//
#ifndef UTIL_GTL_STL_LOGGING_INL_H_
#define UTIL_GTL_STL_LOGGING_INL_H_
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "utilities.h"
#include "config.h"
#ifdef HAVE_USING_OPERATOR
// using ::operator<<;
//
// to fix these errors.
+//
+//
+// Notice for clang users: you should include stl_logging.h BEFORE you
+// include logging.h. Otherwise, you will see some errors when you use
+// CHECK with STL containers.
+//
+// Clang's "using ::operator<<" incorporate symbols which are declared
+// before the using keyword. With GCC, symbols defined after the using
+// keyword are incorporated as well. The CHECK macro defined in
+// logging.h uses the using keyword so you need to include logging.h
+// after including stl_logging.h.
+//
#ifndef UTIL_GTL_STL_LOGGING_INL_H_
#define UTIL_GTL_STL_LOGGING_INL_H_