Remove dynamic's initializer_list constructor
authorGiuseppe Ottaviano <ott@fb.com>
Sat, 22 Oct 2016 18:31:19 +0000 (11:31 -0700)
committerFacebook Github Bot <facebook-github-bot-bot@fb.com>
Sat, 22 Oct 2016 18:38:55 +0000 (11:38 -0700)
Summary: It has been deprecated for several months, time to nuke it.

Reviewed By: yfeldblum

Differential Revision: D4045250

fbshipit-source-id: 21b55a7c99602c42b1a87ced6a59788fe0ac25d7

folly/dynamic-inl.h
folly/dynamic.h
folly/experimental/bser/Load.cpp

index 909c5b28204f664b4199bb631f686ff47b70e66c..a32da925d7385979e89efed09fbf70ab757e18fb 100644 (file)
@@ -212,7 +212,7 @@ inline void dynamic::array(EmptyArrayTag) {}
 
 template <class... Args>
 inline dynamic dynamic::array(Args&& ...args) {
-  return dynamic(Array{std::forward<Args>(args)...}, PrivateTag());
+  return dynamic(Array{std::forward<Args>(args)...});
 }
 
 // This looks like a case for perfect forwarding, but our use of
@@ -309,14 +309,6 @@ inline dynamic::dynamic(std::string&& s) : type_(STRING) {
   new (&u_.string) std::string(std::move(s));
 }
 
-inline dynamic::dynamic(std::initializer_list<dynamic> il)
-    : dynamic(Array(std::move(il)), PrivateTag()) {}
-
-inline dynamic& dynamic::operator=(std::initializer_list<dynamic> il) {
-  (*this) = dynamic(Array(std::move(il)), PrivateTag());
-  return *this;
-}
-
 inline dynamic::dynamic(ObjectMaker&& maker)
   : type_(OBJECT)
 {
@@ -674,7 +666,7 @@ inline void dynamic::pop_back() {
 
 //////////////////////////////////////////////////////////////////////
 
-inline dynamic::dynamic(Array&& r, PrivateTag) : type_(ARRAY) {
+inline dynamic::dynamic(Array&& r) : type_(ARRAY) {
   new (&u_.array) Array(std::move(r));
 }
 
index 7087975931b11b4300b2d2c25ed726cc638b92ce..2dc49434cbf32c386e7bf734533efacf3e7ec1b4 100644 (file)
@@ -63,7 +63,6 @@
 #pragma once
 
 #include <cstdint>
-#include <initializer_list>
 #include <memory>
 #include <ostream>
 #include <string>
@@ -135,7 +134,6 @@ public:
    *   d["something_else"] = dynamic::array(1, 2, 3, nullptr);
    */
 private:
-  struct PrivateTag {};
   struct EmptyArrayTag {};
   struct ObjectMaker;
 
@@ -167,22 +165,6 @@ public:
   /* implicit */ dynamic(ObjectMaker const&) = delete;
   /* implicit */ dynamic(ObjectMaker&&);
 
-  /*
-   * Create a new array from an initializer list.
-   *
-   * For example:
-   *
-   *   dynamic v = { 1, 2, 3, "foo" };
-   */
-  // TODO(ott, 10300209): Remove once all uses have been eradicated.
-
-  FOLLY_DEPRECATED(
-      "Initializer list syntax is deprecated (#10300209). Use dynamic::array.")
-  /* implicit */ dynamic(std::initializer_list<dynamic> il);
-  FOLLY_DEPRECATED(
-      "Initializer list syntax is deprecated (#10300209). Use dynamic::array.")
-  dynamic& operator=(std::initializer_list<dynamic> il);
-
   /*
    * Conversion constructors from most of the other types.
    */
@@ -543,7 +525,7 @@ private:
   template<class T> struct GetAddrImpl;
   template<class T> struct PrintImpl;
 
-  dynamic(Array&& array, PrivateTag);
+  explicit dynamic(Array&& array);
 
   template<class T> T const& get() const;
   template<class T> T&       get();
index 3f82dabb114035af52fcbca8e973eca18b2dd04c..9a64c07e92eaae9af8a477aec04b4623861a8988 100644 (file)
@@ -101,7 +101,7 @@ static dynamic decodeObject(Cursor& curs) {
 }
 
 static dynamic decodeTemplate(Cursor& curs) {
-  std::vector<dynamic> arr;
+  dynamic arr = folly::dynamic::array;
 
   // List of property names
   if ((BserType)curs.read<int8_t>() != BserType::Array) {
@@ -110,7 +110,6 @@ static dynamic decodeTemplate(Cursor& curs) {
   auto names = decodeArray(curs);
 
   auto size = decodeInt(curs);
-  arr.reserve(size);
 
   while (size-- > 0) {
     dynamic obj = dynamic::object;
@@ -126,10 +125,10 @@ static dynamic decodeTemplate(Cursor& curs) {
       obj[name.getString()] = parseBser(curs);
     }
 
-    arr.emplace_back(std::move(obj));
+    arr.push_back(std::move(obj));
   }
 
-  return dynamic(std::move(arr));
+  return arr;
 }
 
 static dynamic parseBser(Cursor& curs) {