Merge #14715: Drop defunct prevector compat handling
69ca48717c
Implement prevector::fill once (Ben Woosley)7bad78c2c8
Drop defunct IS_TRIVIALLY_CONSTRUCTIBLE handling from prevector.h (Ben Woosley) Pull request description: This is clean-up post #14651: * Use one implementation of `prevector::fill`, as it's possible now that the implementations are identical. * Only apply the `IS_TRIVIALLY_CONSTRUCTIBLE` handling to the bench file where it is used, and drop the now-unnecessary associated compat includes. Tree-SHA512: 5930b3a17fccd39af10add40202ad97a297aebecc049af72ca920d0d55b3e4c3c30ce864c8a683355895f0196396d4ea56ba9f9637bdc7d16964cdf66c195485
This commit is contained in:
commit
e736b67467
3 changed files with 10 additions and 18 deletions
|
@ -2,13 +2,21 @@
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include <compat.h>
|
|
||||||
#include <prevector.h>
|
#include <prevector.h>
|
||||||
#include <serialize.h>
|
#include <serialize.h>
|
||||||
#include <streams.h>
|
#include <streams.h>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
#include <bench/bench.h>
|
#include <bench/bench.h>
|
||||||
|
|
||||||
|
// GCC 4.8 is missing some C++11 type_traits,
|
||||||
|
// https://www.gnu.org/software/gcc/gcc-5/changes.html
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 5
|
||||||
|
#define IS_TRIVIALLY_CONSTRUCTIBLE std::has_trivial_default_constructor
|
||||||
|
#else
|
||||||
|
#define IS_TRIVIALLY_CONSTRUCTIBLE std::is_trivially_default_constructible
|
||||||
|
#endif
|
||||||
|
|
||||||
struct nontrivial_t {
|
struct nontrivial_t {
|
||||||
int x;
|
int x;
|
||||||
nontrivial_t() :x(-1) {}
|
nontrivial_t() :x(-1) {}
|
||||||
|
|
10
src/compat.h
10
src/compat.h
|
@ -10,16 +10,6 @@
|
||||||
#include <config/bitcoin-config.h>
|
#include <config/bitcoin-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
// GCC 4.8 is missing some C++11 type_traits,
|
|
||||||
// https://www.gnu.org/software/gcc/gcc-5/changes.html
|
|
||||||
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 5
|
|
||||||
#define IS_TRIVIALLY_CONSTRUCTIBLE std::has_trivial_default_constructor
|
|
||||||
#else
|
|
||||||
#define IS_TRIVIALLY_CONSTRUCTIBLE std::is_trivially_default_constructible
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#ifdef _WIN32_WINNT
|
#ifdef _WIN32_WINNT
|
||||||
#undef _WIN32_WINNT
|
#undef _WIN32_WINNT
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
#include <compat.h>
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
/** Implements a drop-in replacement for std::vector<T> which stores up to N
|
/** Implements a drop-in replacement for std::vector<T> which stores up to N
|
||||||
* elements directly (without heap allocation). The types Size and Diff are
|
* elements directly (without heap allocation). The types Size and Diff are
|
||||||
|
@ -198,11 +196,7 @@ private:
|
||||||
T* item_ptr(difference_type pos) { return is_direct() ? direct_ptr(pos) : indirect_ptr(pos); }
|
T* item_ptr(difference_type pos) { return is_direct() ? direct_ptr(pos) : indirect_ptr(pos); }
|
||||||
const T* item_ptr(difference_type pos) const { return is_direct() ? direct_ptr(pos) : indirect_ptr(pos); }
|
const T* item_ptr(difference_type pos) const { return is_direct() ? direct_ptr(pos) : indirect_ptr(pos); }
|
||||||
|
|
||||||
void fill(T* dst, ptrdiff_t count) {
|
void fill(T* dst, ptrdiff_t count, const T& value = T{}) {
|
||||||
std::fill_n(dst, count, T{});
|
|
||||||
}
|
|
||||||
|
|
||||||
void fill(T* dst, ptrdiff_t count, const T& value) {
|
|
||||||
std::fill_n(dst, count, value);
|
std::fill_n(dst, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue