diff --git a/folly/dynamic-inl.h b/folly/dynamic-inl.h
index 4a7c3c54194fe30ec985a27ea1420cf2a0c14ea0..94ddea4c36cdea72b2c56125bbd7ebc64e7b2584 100644
--- a/folly/dynamic-inl.h
+++ b/folly/dynamic-inl.h
@@ -586,12 +586,16 @@ inline std::size_t dynamic::erase(dynamic const& key) {
}
inline dynamic::const_iterator dynamic::erase(const_iterator it) {
- return get<Array>().erase(it);
+ auto& arr = get<Array>();
+ return get<Array>().erase(arr.begin() + (it - arr.begin()));
}
inline dynamic::const_iterator
dynamic::erase(const_iterator first, const_iterator last) {
- return get<Array>().erase(first, last);
+ auto& arr = get<Array>();
+ return get<Array>().erase(
+ arr.begin() + (first - arr.begin()),
+ arr.begin() + (last - arr.begin()));
}
inline dynamic::const_key_iterator dynamic::erase(const_key_iterator it) {
diff --git a/folly/dynamic.h b/folly/dynamic.h
index 6a5fe0bdb5536315a81f8a555cb51ab0e7b6da84..3defcfafc8ed7271c955105e81c91a1294f39d46 100644
--- a/folly/dynamic.h
+++ b/folly/dynamic.h
@@ -70,11 +70,11 @@
#include <ostream>
#include <type_traits>
#include <initializer_list>
+#include <vector>
#include <cstdint>
#include <boost/operators.hpp>
#include "folly/Traits.h"
-#include "folly/FBVector.h"
#include "folly/FBString.h"
namespace folly {
@@ -83,7 +83,6 @@ namespace folly {
struct dynamic;
struct TypeError;
-template<> FOLLY_ASSUME_RELOCATABLE(dynamic);
//////////////////////////////////////////////////////////////////////
@@ -108,7 +107,7 @@ struct dynamic : private boost::operators<dynamic> {
* Object item iterators dereference as pairs of (key, value).
*/
private:
- typedef fbvector<dynamic> Array;
+ typedef std::vector<dynamic> Array;
public:
typedef Array::const_iterator const_iterator;
struct const_key_iterator;