android_system_core/base/include/android-base
Maciej Żenczykowski dc12124aba expected.h - fix bugprone-forwarding-reference-overload warnings
Fixes:
  system/core/base/include/android-base/expected.h:
  186:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
  195:22: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
  611:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]

To quote Tom Cherry:
  I'm a bit confused at what's happening there.
  I think it's a bug in the linter itself.
  The general solution to that problem is a heavy dose of std::enable_if<>
  to hide that constructor when the 'U' parameter is the same class,
  but those constructors do have the necessarily std::enable_if<> lines.

  I think the problem is that the linter doesn't check that the macro
  _ENABLE_IF() expands into std::enable_if<>.  Let me try explicitly
  putting the std::enable_if<> instead of the macro and check if it
  goes away.

  I expanded the macro but the linter doesn't still doesn't accept
  the format of `std::enable_if_t<(condition_here)>* = nullptr`.
  It does accept `typename Enable = std::enable_if_t<(condition_here), void>`,
  which is the syntax used on their example here:
    https://clang.llvm.org/extra/clang-tidy/checks/bugprone-forwarding-reference-overload.html.

  That latter syntax doesn't work for us.
  See the Notes section on
    https://en.cppreference.com/w/cpp/types/enable_if
  as a reference for why what we're doing is correct.

Test: builds
Bug: 153035880
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I493ff19208cc104f5f176a36ec23fbcb914388f7
2020-04-24 11:28:06 -07:00
..
chrono_utils.h libbase: switch to #pragma once. 2018-06-26 17:17:41 -07:00
cmsg.h Revert "Revert "Add a way to turn off unique_fd's operator int."" 2019-05-06 16:18:02 -07:00
collections.h base: add helpers for sending/receiving file descriptors. 2019-02-13 13:21:54 -08:00
endian.h <android-base/endian.h>: fix interoperability issue 2019-09-18 13:06:45 +08:00
errno_restorer.h liblog: always restore errno in logging functions 2020-01-27 13:50:44 -08:00
errors.h libbase: switch to #pragma once. 2018-06-26 17:17:41 -07:00
expected.h expected.h - fix bugprone-forwarding-reference-overload warnings 2020-04-24 11:28:06 -07:00
file.h Revert "Revert "Add a way to turn off unique_fd's operator int."" 2019-05-06 16:18:02 -07:00
format.h Include chrono.h 2019-08-27 20:38:14 +00:00
logging.h liblog: always restore errno in logging functions 2020-01-27 13:50:44 -08:00
macros.h Remove various bits of dead code and unused workarounds. 2020-02-22 16:53:24 +00:00
mapped_file.h Fix SEGV in libziparchive with malformed zip file. 2019-12-17 08:39:09 -08:00
memory.h libbase: switch to #pragma once. 2018-06-26 17:17:41 -07:00
no_destructor.h base: steal Chromium's NoDestructor. 2019-12-06 13:23:05 -08:00
off64_t.h libbase: a slightly cleaner solution to libbase's off64_t problem. 2018-10-25 16:29:02 -07:00
parsebool.h Expose ParseBool from libbase 2019-11-19 13:31:50 -08:00
parsedouble.h ParseFloat/ParseDouble, also take std::string 2018-08-09 10:49:45 -07:00
parseint.h Assert that ParseInt/ParseUint are only used with signed/unsigned numbers respectively 2018-10-05 14:30:39 -07:00
parsenetaddress.h libbase: switch to #pragma once. 2018-06-26 17:17:41 -07:00
process.h Add android::base::GetPids() function to return all pids 2019-07-01 13:55:46 -07:00
properties.h base: add CachedProperty. 2020-02-27 13:56:48 -08:00
result.h base: remove Errorf/ErrnoErrorf work around 2020-02-14 12:43:11 -08:00
scopeguard.h Add noexcept to move constructors and assignment operators. 2018-10-05 16:43:47 +00:00
stringprintf.h libbase: switch to #pragma once. 2018-06-26 17:17:41 -07:00
strings.h Add absl-like StringReplace. 2019-11-18 16:02:31 -08:00
test_utils.h base: avoid evaluating macro argument multiple times. 2019-12-12 14:25:45 -08:00
thread_annotations.h base: add ScopedLockAssertion. 2019-02-12 16:32:35 -08:00
threads.h Move libbacktrace off cutils. 2018-07-11 13:55:07 -07:00
unique_fd.h base: tag unique_fd::reset as reinitializing for clang-tidy. 2020-03-09 12:32:56 -07:00
utf8.h Add sys/types.h in utf8.h 2018-09-21 10:46:35 -07:00