• Maksim Ivanov's avatar
    Fix support of C++ references in UMA macros · 530f4cc2
    Maksim Ivanov authored
    This CL fixes compilation errors caused when passing const-refs or
    non-const-refs as value arguments for the UMA macros.
    
    
    Before this CL, an attempt to pass a const-ref as a value resulted
    in errors like this:
    
    base/metrics/histogram_macros_internal.h:30:5: error: static_assert failed due to requirement 'sizeof(const TestEnum &) == 0' "enumerator must define kMaxValue enumerat
    or to use this macro!"
        static_assert(
        ^
    base/metrics/histogram_macros_unittest.cc:63:3: note: in instantiation of member function 'base::internal::EnumSizeTraits<const TestEnum &, void>::Count' requested here
      UMA_HISTOGRAM_ENUMERATION("Test.ScopedEnumeration3", value_ref);
      ^
    base/metrics/histogram_macros.h:84:7: note: expanded from macro 'UMA_HISTOGRAM_ENUMERATION'
          INTERNAL_UMA_HISTOGRAM_ENUMERATION_DEDUCE_BOUNDARY)               \
          ^
    In file included from ../../base/metrics/histogram_macros_unittest.cc:5:
    In file included from ../../base/metrics/histogram_macros.h:10:
    base/metrics/histogram_macros_internal.h:33:12: error: reference to type 'const TestEnum' requires an initializer
        return Enum();
    
    
    Bug: none
    Change-Id: I875ff783bda12cc30079bcf6188ff843b9b55a0c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1729593Reviewed-by: default avatarJesse Doherty <jwd@chromium.org>
    Commit-Queue: Maksim Ivanov <emaxx@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#682898}
    530f4cc2
histogram_macros_unittest.cc 2.11 KB