Snap for 7272906 from 3581b4a46659b5bedb3e66530e2ca528f1d548b9 to tm-release

Change-Id: I689a6faa00cb3ad298ffe19205b811c6d19602e5
diff --git a/include/cppbor/cppbor.h b/include/cppbor/cppbor.h
index 004c894..b78c41f 100644
--- a/include/cppbor/cppbor.h
+++ b/include/cppbor/cppbor.h
@@ -285,7 +285,7 @@
     bool operator==(const Int& other) const& { return value() == other.value(); }
 
     virtual int64_t value() const = 0;
-
+    using Item::asInt;
     Int* asInt() override { return this; }
 };
 
@@ -301,6 +301,7 @@
     bool operator==(const Uint& other) const& { return mValue == other.mValue; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asUint;
     Uint* asUint() override { return this; }
 
     size_t encodedSize() const override { return headerSize(mValue); }
@@ -339,6 +340,7 @@
     bool operator==(const Nint& other) const& { return mValue == other.mValue; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asNint;
     Nint* asNint() override { return this; }
     size_t encodedSize() const override { return headerSize(addlInfo()); }
 
@@ -397,6 +399,7 @@
     bool operator==(const Bstr& other) const& { return mValue == other.mValue; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asBstr;
     Bstr* asBstr() override { return this; }
     size_t encodedSize() const override { return headerSize(mValue.size()) + mValue.size(); }
     using Item::encode;
@@ -447,6 +450,7 @@
     bool operator==(const ViewBstr& other) const& { return mView == other.mView; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asViewBstr;
     ViewBstr* asViewBstr() override { return this; }
     size_t encodedSize() const override { return headerSize(mView.size()) + mView.size(); }
     using Item::encode;
@@ -497,6 +501,7 @@
     bool operator==(const Tstr& other) const& { return mValue == other.mValue; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asTstr;
     Tstr* asTstr() override { return this; }
     size_t encodedSize() const override { return headerSize(mValue.size()) + mValue.size(); }
     using Item::encode;
@@ -544,6 +549,7 @@
     bool operator==(const ViewTstr& other) const& { return mView == other.mView; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asViewTstr;
     ViewTstr* asViewTstr() override { return this; }
     size_t encodedSize() const override { return headerSize(mView.size()) + mView.size(); }
     using Item::encode;
@@ -619,6 +625,7 @@
     std::unique_ptr<Item>& get(size_t index) { return mEntries[index]; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asArray;
     Array* asArray() override { return this; }
 
     std::unique_ptr<Item> clone() const override;
@@ -707,6 +714,7 @@
     const auto& operator[](size_t index) const { return mEntries[index]; }
 
     MajorType type() const override { return kMajorType; }
+    using Item::asMap;
     Map* asMap() override { return this; }
 
     /**
@@ -778,19 +786,30 @@
     // type() is a bit special.  In normal usage it should return the wrapped type, but during
     // parsing when we haven't yet parsed the tagged item, it needs to return SEMANTIC.
     MajorType type() const override { return mTaggedItem ? mTaggedItem->type() : SEMANTIC; }
+    using Item::asSemanticTag;
     SemanticTag* asSemanticTag() override { return this; }
 
     // Type information reflects the enclosed Item.  Note that if the immediately-enclosed Item is
     // another tag, these methods will recurse down to the non-tag Item.
+    using Item::asInt;
     Int* asInt() override { return mTaggedItem->asInt(); }
+    using Item::asUint;
     Uint* asUint() override { return mTaggedItem->asUint(); }
+    using Item::asNint;
     Nint* asNint() override { return mTaggedItem->asNint(); }
+    using Item::asTstr;
     Tstr* asTstr() override { return mTaggedItem->asTstr(); }
+    using Item::asBstr;
     Bstr* asBstr() override { return mTaggedItem->asBstr(); }
+    using Item::asSimple;
     Simple* asSimple() override { return mTaggedItem->asSimple(); }
+    using Item::asMap;
     Map* asMap() override { return mTaggedItem->asMap(); }
+    using Item::asArray;
     Array* asArray() override { return mTaggedItem->asArray(); }
+    using Item::asViewTstr;
     ViewTstr* asViewTstr() override { return mTaggedItem->asViewTstr(); }
+    using Item::asViewBstr;
     ViewBstr* asViewBstr() override { return mTaggedItem->asViewBstr(); }
 
     std::unique_ptr<Item> clone() const override;