/*
- * Copyright 2012 Facebook, Inc.
+ * Copyright 2013 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
//////////////////////////////////////////////////////////////////////
template<class T, std::size_t M, class A, class B, class C>
-struct small_vector;
+class small_vector;
//////////////////////////////////////////////////////////////////////
void populateMemForward(T* mem, std::size_t n, Function const& op) {
std::size_t idx = 0;
try {
- for (int i = 0; i < n; ++i) {
+ for (size_t i = 0; i < n; ++i) {
op(&mem[idx]);
++idx;
}
}
template <class T>
T* pointerFlagClear(T* p) {
- return reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p) & ~1);
+ return reinterpret_cast<T*>(
+ reinterpret_cast<uintptr_t>(p) & ~uintptr_t(1));
}
inline void* shiftPointer(void* p, size_t sizeBytes) {
return static_cast<char*>(p) + sizeBytes;
reference at(size_type i) {
if (i >= size()) {
- throw std::out_of_range();
+ throw std::out_of_range("index out of range");
}
return (*this)[i];
}
const_reference at(size_type i) const {
if (i >= size()) {
- throw std::out_of_range();
+ throw std::out_of_range("index out of range");
}
return (*this)[i];
}
needBytes += kHeapifyCapacitySize;
}
auto const sizeBytes = goodMallocSize(needBytes);
- void* newh = std::malloc(sizeBytes);
- if (!newh) {
- throw std::bad_alloc();
- }
+ void* newh = checkedMalloc(sizeBytes);
// We expect newh to be at least 2-aligned, because we want to
// use its least significant bit as a flag.
assert(!detail::pointerFlagGet(newh));