DenseSet: Appease msc18 to define derived constructors explicitly.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 19 Oct 2016 05:43:17 +0000 (05:43 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 19 Oct 2016 05:43:17 +0000 (05:43 +0000)
msc18 doesn't recognize "using BaseT::BaseT;"

  llvm\include\llvm/ADT/DenseSet.h(213) : error C2875: using-declaration causes a multiple declaration of 'BaseT'
          llvm\include\llvm/ADT/DenseSet.h(214) : see reference to class template instantiation 'llvm::DenseSet<ValueT,ValueInfoT>' being compiled
  llvm\include\llvm/ADT/DenseSet.h(231) : error C2875: using-declaration causes a multiple declaration of 'BaseT'
          llvm\include\llvm/ADT/DenseSet.h(232) : see reference to class template instantiation 'llvm::SmallDenseSet<ValueT,InlineBuckets,ValueInfoT>' being compiled

llvm-svn: 284570

llvm/include/llvm/ADT/DenseSet.h

index b25d3b7..a31c4da 100644 (file)
@@ -210,7 +210,13 @@ class DenseSet : public detail::DenseSetImpl<
                            ValueInfoT>;
 
 public:
+#if defined(_MSC_VER) && _MSC_VER < 1900
+  explicit DenseSet(unsigned InitialReserve = 0)
+      : DenseSetImpl(InitialReserve) {}
+  DenseSet(std::initializer_list<ValueT> Elems) : DenseSetImpl(Elems) {}
+#else
   using BaseT::BaseT;
+#endif
 };
 
 /// Implements a dense probed hash-table based set with some number of buckets
@@ -228,7 +234,13 @@ class SmallDenseSet
       ValueInfoT>;
 
 public:
+#if defined(_MSC_VER) && _MSC_VER < 1900
+  explicit SmallDenseSet(unsigned InitialReserve = 0)
+      : DenseSetImpl(InitialReserve) {}
+  SmallDenseSet(std::initializer_list<ValueT> Elems) : DenseSetImpl(Elems) {}
+#else
   using BaseT::BaseT;
+#endif
 };
 
 } // end namespace llvm