• Clemens Hammacher's avatar
    Fix is_trivially_copyable check for MSVC and older stdlibc++ · 9dd6f0d0
    Clemens Hammacher authored
    MSVC 2015 and 2017 implement std::is_trivially_copyable, but not
    correctly. Hence, reimplement it using more low-level primitives.
    
    For stdlibc++ versions below 5.0, we already have a workaround for the
    missing support of std::is_trivially_copyable, but this is an unsound
    approximation, because it is ignoring move constructor, move assignment
    and copy assignment. Therefore, do not use this approximation for
    asserting trivial copyability of a type.
    
    Finally, add unittests for the new is_trivially_copyable
    implementations.
    
    R=mstarzinger@chromium.org
    CC=loorongjie@gmail.com
    
    Change-Id: I9ee56a65882e8c94b72c9a2d484edd27963a5d89
    Reviewed-on: https://chromium-review.googlesource.com/941521Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51651}
    9dd6f0d0
Name
Last commit
Last update
..
debug Loading commit data...
platform Loading commit data...
utils Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
adapters.h Loading commit data...
atomic-utils.h Loading commit data...
atomicops.h Loading commit data...
atomicops_internals_atomicword_compat.h Loading commit data...
atomicops_internals_portable.h Loading commit data...
atomicops_internals_std.h Loading commit data...
base-export.h Loading commit data...
bits.cc Loading commit data...
bits.h Loading commit data...
build_config.h Loading commit data...
compiler-specific.h Loading commit data...
cpu.cc Loading commit data...
cpu.h Loading commit data...
division-by-constant.cc Loading commit data...
division-by-constant.h Loading commit data...
export-template.h Loading commit data...
file-utils.cc Loading commit data...
file-utils.h Loading commit data...
flags.h Loading commit data...
format-macros.h Loading commit data...
free_deleter.h Loading commit data...
functional.cc Loading commit data...
functional.h Loading commit data...
hashmap-entry.h Loading commit data...
hashmap.h Loading commit data...
ieee754.cc Loading commit data...
ieee754.h Loading commit data...
iterator.h Loading commit data...
lazy-instance.h Loading commit data...
logging.cc Loading commit data...
logging.h Loading commit data...
macros.h Loading commit data...
once.cc Loading commit data...
once.h Loading commit data...
optional.h Loading commit data...
page-allocator.cc Loading commit data...
page-allocator.h Loading commit data...
qnx-math.h Loading commit data...
ring-buffer.h Loading commit data...
safe_conversions.h Loading commit data...
safe_conversions_impl.h Loading commit data...
safe_math.h Loading commit data...
safe_math_impl.h Loading commit data...
sys-info.cc Loading commit data...
sys-info.h Loading commit data...
template-utils.h Loading commit data...
timezone-cache.h Loading commit data...
tsan.h Loading commit data...
v8-fallthrough.h Loading commit data...
win32-headers.h Loading commit data...