Reland "GCC: Fix base::internal::InvokeFuncImpl"

This is a reland of 9293d5c86eec1c34fc00716645400b44a14e764e

Original change's description:
> GCC: Fix base::internal::InvokeFuncImpl
> 
> GCC doesn't like that the Value data member has no out-of-line
> definition. The problem is triggered specifically only when compiling
> 
>   components/services/leveldb/leveldb_database_impl.cc
> 
> which has lambda functions returning locally-defined classes.
> 
> The current code works as-is in C++17 mode which introduces the concept
> of inline variables, but in C++14 we need either an explicit out-of-line
> definition or a function member instead of a data member.
> 
> Use std::integral_constant for defining the value.
> 
> Bug: 819294
> Change-Id: I5c68e14ce3fa9d8b4d8a2cb42d7f9b53938aabf3
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862451
> Reviewed-by: Jan Wilken Dörrie <jdoerrie@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Commit-Queue: Jüri Valdmann <juri.valdmann@qt.io>
> Cr-Commit-Position: refs/heads/master@{#706384}

Bug: 819294
Change-Id: I3d5a52ddc6815516e2239f9347c60de06bf765a2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865212
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707329}
1 file changed