Refactoring: C++11 style DISABLE_ bionic marcos

  Enable the -std=gnu++11 flag for libstdc++ static and
  dynamic libs.

  ScopeGuard uses DISABLE_ macros instead of '= delete';

Change-Id: I07e21b306f95fffd49345f7fa136cfdac61e0225
diff --git a/libc/Android.mk b/libc/Android.mk
index d277551..e87c07c 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -1181,6 +1181,7 @@
 include $(CLEAR_VARS)
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -1193,6 +1194,7 @@
 include $(CLEAR_VARS)
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
diff --git a/libc/private/ScopeGuard.h b/libc/private/ScopeGuard.h
index 183e322..d5a9235 100644
--- a/libc/private/ScopeGuard.h
+++ b/libc/private/ScopeGuard.h
@@ -14,8 +14,10 @@
  * limitations under the License.
  */
 
-#ifndef SCOPE_GUARD_H
-#define SCOPE_GUARD_H
+#ifndef _SCOPE_GUARD_H
+#define _SCOPE_GUARD_H
+
+#include "private/bionic_macros.h"
 
 // TODO: include explicit std::move when it becomes available
 template<typename F>
@@ -40,14 +42,12 @@
   F f_;
   bool active_;
 
-  ScopeGuard() = delete;
-  ScopeGuard(const ScopeGuard&) = delete;
-  ScopeGuard& operator=(const ScopeGuard&) = delete;
+  DISALLOW_IMPLICIT_CONSTRUCTORS(ScopeGuard);
 };
 
 template<typename T>
-ScopeGuard<T> create_scope_guard(T f) {
+ScopeGuard<T> make_scope_guard(T f) {
   return ScopeGuard<T>(f);
 }
 
-#endif  // SCOPE_GUARD_H
+#endif  // _SCOPE_GUARD_H
diff --git a/libc/private/bionic_macros.h b/libc/private/bionic_macros.h
index 61794bd..491b3ac 100644
--- a/libc/private/bionic_macros.h
+++ b/libc/private/bionic_macros.h
@@ -20,8 +20,8 @@
 // DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions.
 // It goes in the private: declarations in a class.
 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
-  TypeName(const TypeName&);               \
-  void operator=(const TypeName&)
+  TypeName(const TypeName&) = delete;      \
+  void operator=(const TypeName&) = delete
 
 // A macro to disallow all the implicit constructors, namely the
 // default constructor, copy constructor and operator= functions.
@@ -30,7 +30,7 @@
 // that wants to prevent anyone from instantiating it. This is
 // especially useful for classes containing only static methods.
 #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
-  TypeName();                                    \
+  TypeName() = delete;                           \
   DISALLOW_COPY_AND_ASSIGN(TypeName)
 
 #define BIONIC_ALIGN(value, alignment) \
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 793ffd5..f436e85 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -955,7 +955,7 @@
   SoinfoLinkedList found_libs;
   size_t soinfos_size = 0;
 
-  auto failure_guard = create_scope_guard([&]() {
+  auto failure_guard = make_scope_guard([&]() {
     // Housekeeping
     load_tasks.for_each([] (LoadTask* t) {
       LoadTask::deleter(t);
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index 3568f8f..aa0af44 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -145,7 +145,7 @@
   // in both dt_needed libraries, the correct relocation should
   // use the function defined in libtest_relo_check_dt_needed_order_1.so
   void* handle = nullptr;
-  auto guard = create_scope_guard([&]() {
+  auto guard = make_scope_guard([&]() {
     dlclose(handle);
   });
 
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index ad4654e..2203db9 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -762,7 +762,7 @@
 }
 
 TEST(math, lrint) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
 
@@ -786,7 +786,7 @@
 }
 
 TEST(math, rint) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
 
@@ -816,7 +816,7 @@
 }
 
 TEST(math, nearbyint) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
@@ -845,7 +845,7 @@
 }
 
 TEST(math, lround) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // lround ignores the rounding mode.
@@ -855,7 +855,7 @@
 }
 
 TEST(math, llround) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // llround ignores the rounding mode.
@@ -952,7 +952,7 @@
 }
 
 TEST(math, round) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_TOWARDZERO); // round ignores the rounding mode and always rounds away from zero.
@@ -965,7 +965,7 @@
 }
 
 TEST(math, roundf) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_TOWARDZERO); // roundf ignores the rounding mode and always rounds away from zero.
@@ -978,7 +978,7 @@
 }
 
 TEST(math, roundl) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_TOWARDZERO); // roundl ignores the rounding mode and always rounds away from zero.
@@ -991,7 +991,7 @@
 }
 
 TEST(math, trunc) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // trunc ignores the rounding mode and always rounds toward zero.
@@ -1004,7 +1004,7 @@
 }
 
 TEST(math, truncf) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // truncf ignores the rounding mode and always rounds toward zero.
@@ -1017,7 +1017,7 @@
 }
 
 TEST(math, truncl) {
-  auto guard = create_scope_guard([]() {
+  auto guard = make_scope_guard([]() {
     fesetenv(FE_DFL_ENV);
   });
   fesetround(FE_UPWARD); // truncl ignores the rounding mode and always rounds toward zero.
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 9a9e515..3a5c3dc 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -871,7 +871,7 @@
 #endif
   EXPECT_EQ(rl.rlim_cur, stack_size);
 
-  auto guard = create_scope_guard([&rl, original_rlim_cur]() {
+  auto guard = make_scope_guard([&rl, original_rlim_cur]() {
     rl.rlim_cur = original_rlim_cur;
     ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
   });