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));
   });
