From: Benjamin Kramer Date: Sun, 1 Feb 2015 20:47:51 +0000 (+0000) Subject: Actually we can just inline the base typedef and use the injected class name for... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a64e3fe67ba400319a633d44d843a38e71bfc9d8;p=clang Actually we can just inline the base typedef and use the injected class name for the base class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227765 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/CanonicalType.h b/include/clang/AST/CanonicalType.h index d73daaab7a..43dd942a18 100644 --- a/include/clang/AST/CanonicalType.h +++ b/include/clang/AST/CanonicalType.h @@ -382,20 +382,18 @@ namespace clang { /// \brief Iterator adaptor that turns an iterator over canonical QualTypes /// into an iterator over CanQualTypes. template -class CanTypeIterator - : public llvm::iterator_adaptor_base< +struct CanTypeIterator + : llvm::iterator_adaptor_base< CanTypeIterator, InputIterator, typename std::iterator_traits::iterator_category, CanQualType, typename std::iterator_traits::difference_type, CanProxy, CanQualType> { - typedef typename CanTypeIterator::iterator_adaptor_base BaseT; - -public: CanTypeIterator() {} - explicit CanTypeIterator(InputIterator Iter) : BaseT(std::move(Iter)) {} + explicit CanTypeIterator(InputIterator Iter) + : CanTypeIterator::iterator_adaptor_base(std::move(Iter)) {} - CanQualType operator*() const { return CanQualType::CreateUnsafe(*BaseT::I); } + CanQualType operator*() const { return CanQualType::CreateUnsafe(*this->I); } CanProxy operator->() const; }; diff --git a/include/clang/AST/DeclTemplate.h b/include/clang/AST/DeclTemplate.h index 2c1d8f42b1..da370ae185 100644 --- a/include/clang/AST/DeclTemplate.h +++ b/include/clang/AST/DeclTemplate.h @@ -552,23 +552,20 @@ protected: template , typename DeclType = typename SETraits::DeclType> - class SpecIterator - : public llvm::iterator_adaptor_base< + struct SpecIterator + : llvm::iterator_adaptor_base< SpecIterator, typename llvm::FoldingSetVector::iterator, typename std::iterator_traits::iterator>::iterator_category, DeclType *, ptrdiff_t, DeclType *, DeclType *> { - typedef typename SpecIterator::iterator_adaptor_base BaseT; - - public: SpecIterator() {} explicit SpecIterator( typename llvm::FoldingSetVector::iterator SetIter) - : BaseT(std::move(SetIter)) {} + : SpecIterator::iterator_adaptor_base(std::move(SetIter)) {} DeclType *operator*() const { - return SETraits::getMostRecentDecl(&*BaseT::I); + return SETraits::getMostRecentDecl(&*this->I); } DeclType *operator->() const { return **this; } };