cleanup label_ptr.h

Use C++11 default initializers, and remove un-needed template
predicates. The only one which was used was LabelPtrLabelLess
which is entirely redundant, since the default std::less<>
implementation will pick the global operator<() definition.

R=dpranke@chromium.org,brettw@chromium.org
BUG=NONE

Change-Id: Ie3383a60eb67aafdf25666470dab5368f29f8cec
Reviewed-on: https://gn-review.googlesource.com/c/3661
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Brett Wilson <brettw@chromium.org>
diff --git a/tools/gn/desc_builder.cc b/tools/gn/desc_builder.cc
index d4b4941..e377f3e 100644
--- a/tools/gn/desc_builder.cc
+++ b/tools/gn/desc_builder.cc
@@ -538,8 +538,7 @@
     std::vector<LabelTargetPair> sorted_deps;
     for (const auto& pair : target->GetDeps(Target::DEPS_ALL))
       sorted_deps.push_back(pair);
-    std::sort(sorted_deps.begin(), sorted_deps.end(),
-              LabelPtrLabelLess<Target>());
+    std::sort(sorted_deps.begin(), sorted_deps.end());
 
     std::string indent(indent_level * 2, ' ');
 
diff --git a/tools/gn/label_ptr.h b/tools/gn/label_ptr.h
index 5aaa02d..ac994f5 100644
--- a/tools/gn/label_ptr.h
+++ b/tools/gn/label_ptr.h
@@ -24,25 +24,23 @@
 struct LabelPtrPair {
   typedef T DestType;
 
-  LabelPtrPair() : label(), ptr(nullptr), origin(nullptr) {}
+  LabelPtrPair() = default;
 
-  explicit LabelPtrPair(const Label& l)
-      : label(l), ptr(nullptr), origin(nullptr) {}
+  explicit LabelPtrPair(const Label& l) : label(l) {}
 
   // This contructor is typically used in unit tests, it extracts the label
   // automatically from a given pointer.
-  explicit LabelPtrPair(const T* p)
-      : label(p->label()), ptr(p), origin(nullptr) {}
+  explicit LabelPtrPair(const T* p) : label(p->label()), ptr(p) {}
 
-  ~LabelPtrPair() {}
+  ~LabelPtrPair() = default;
 
   Label label;
-  const T* ptr;  // May be NULL.
+  const T* ptr = nullptr;
 
   // The origin of this dependency. This will be null for internally generated
   // dependencies. This happens when a group is automatically expanded and that
   // group's members are added to the target that depends on that group.
-  const ParseNode* origin;
+  const ParseNode* origin = nullptr;
 };
 
 typedef LabelPtrPair<Config> LabelConfigPair;
@@ -51,41 +49,6 @@
 typedef std::vector<LabelConfigPair> LabelConfigVector;
 typedef std::vector<LabelTargetPair> LabelTargetVector;
 
-// Comparison and search functions ---------------------------------------------
-
-// To do a brute-force search by label:
-// std::find_if(vect.begin(), vect.end(), LabelPtrLabelEquals<Config>(label));
-template <typename T>
-struct LabelPtrLabelEquals {
-  explicit LabelPtrLabelEquals(const Label& l) : label(l) {}
-
-  bool operator()(const LabelPtrPair<T>& arg) const {
-    return arg.label == label;
-  }
-
-  const Label& label;
-};
-
-// To do a brute-force search by object pointer:
-// std::find_if(vect.begin(), vect.end(), LabelPtrPtrEquals<Config>(config));
-template <typename T>
-struct LabelPtrPtrEquals {
-  explicit LabelPtrPtrEquals(const T* p) : ptr(p) {}
-
-  bool operator()(const LabelPtrPair<T>& arg) const { return arg.ptr == ptr; }
-
-  const T* ptr;
-};
-
-// To sort by label:
-// std::sort(vect.begin(), vect.end(), LabelPtrLabelLess<Config>());
-template <typename T>
-struct LabelPtrLabelLess {
-  bool operator()(const LabelPtrPair<T>& a, const LabelPtrPair<T>& b) const {
-    return a.label < b.label;
-  }
-};
-
 // Default comparison operators -----------------------------------------------
 //
 // The default hash and comparison operators operate on the label, which should