diff --git a/libc/Android.mk b/libc/Android.mk index fe1f31577..92ead2637 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -1164,6 +1164,7 @@ libstdcxx_common_src_files := \ 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 @@ -1176,6 +1177,7 @@ include $(BUILD_SHARED_LIBRARY) 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 183e322f7..d5a9235d1 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 @@ -40,14 +42,12 @@ class ScopeGuard { F f_; bool active_; - ScopeGuard() = delete; - ScopeGuard(const ScopeGuard&) = delete; - ScopeGuard& operator=(const ScopeGuard&) = delete; + DISALLOW_IMPLICIT_CONSTRUCTORS(ScopeGuard); }; template -ScopeGuard create_scope_guard(T f) { +ScopeGuard make_scope_guard(T f) { return ScopeGuard(f); } -#endif // SCOPE_GUARD_H +#endif // _SCOPE_GUARD_H diff --git a/libc/private/bionic_macros.h b/libc/private/bionic_macros.h index 61794bd54..491b3ace0 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 793ffd51e..f436e85bd 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -955,7 +955,7 @@ static bool find_libraries(const char* const library_names[], size_t library_nam 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 fb3bfc511..bb9d8c0b8 100644 --- a/tests/dlfcn_test.cpp +++ b/tests/dlfcn_test.cpp @@ -145,7 +145,7 @@ TEST(dlfcn, dlopen_check_relocation_dt_needed_order) { // 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 ad4654e53..2203db9f4 100644 --- a/tests/math_test.cpp +++ b/tests/math_test.cpp @@ -762,7 +762,7 @@ TEST(math, erfcl) { } TEST(math, lrint) { - auto guard = create_scope_guard([]() { + auto guard = make_scope_guard([]() { fesetenv(FE_DFL_ENV); }); @@ -786,7 +786,7 @@ TEST(math, lrint) { } TEST(math, rint) { - auto guard = create_scope_guard([]() { + auto guard = make_scope_guard([]() { fesetenv(FE_DFL_ENV); }); @@ -816,7 +816,7 @@ TEST(math, rint) { } 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, nearbyint) { } 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, lround) { } 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, fdiml) { } 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, round) { } 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, roundf) { } 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, roundl) { } 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, trunc) { } 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, truncf) { } 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 4a7c6bd88..32bb54c5d 100644 --- a/tests/pthread_test.cpp +++ b/tests/pthread_test.cpp @@ -869,7 +869,7 @@ TEST(pthread, pthread_attr_getstack__main_thread) { #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)); });