r227765 - Actually we can just inline the base typedef and use the injected class name for the base class.

Richard Smith richard at metafoo.co.uk
Sun Feb 1 12:54:03 PST 2015


On Sun, Feb 1, 2015 at 12:47 PM, Benjamin Kramer <benny.kra at googlemail.com>
wrote:

> Author: d0k
> Date: Sun Feb  1 14:47:51 2015
> New Revision: 227765
>
> URL: http://llvm.org/viewvc/llvm-project?rev=227765&view=rev
> Log:
> Actually we can just inline the base typedef and use the injected class
> name for the base class.
>

IIRC this will make MSVC angry.


> Modified:
>     cfe/trunk/include/clang/AST/CanonicalType.h
>     cfe/trunk/include/clang/AST/DeclTemplate.h
>
> Modified: cfe/trunk/include/clang/AST/CanonicalType.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/CanonicalType.h?rev=227765&r1=227764&r2=227765&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/AST/CanonicalType.h (original)
> +++ cfe/trunk/include/clang/AST/CanonicalType.h Sun Feb  1 14:47:51 2015
> @@ -382,20 +382,18 @@ namespace clang {
>  /// \brief Iterator adaptor that turns an iterator over canonical
> QualTypes
>  /// into an iterator over CanQualTypes.
>  template <typename InputIterator>
> -class CanTypeIterator
> -    : public llvm::iterator_adaptor_base<
> +struct CanTypeIterator
> +    : llvm::iterator_adaptor_base<
>            CanTypeIterator<InputIterator>, InputIterator,
>            typename std::iterator_traits<InputIterator>::iterator_category,
>            CanQualType,
>            typename std::iterator_traits<InputIterator>::difference_type,
>            CanProxy<Type>, 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<Type> operator->() const;
>  };
>
>
> Modified: cfe/trunk/include/clang/AST/DeclTemplate.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclTemplate.h?rev=227765&r1=227764&r2=227765&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclTemplate.h (original)
> +++ cfe/trunk/include/clang/AST/DeclTemplate.h Sun Feb  1 14:47:51 2015
> @@ -552,23 +552,20 @@ protected:
>
>    template <typename EntryType, typename SETraits =
> SpecEntryTraits<EntryType>,
>              typename DeclType = typename SETraits::DeclType>
> -  class SpecIterator
> -      : public llvm::iterator_adaptor_base<
> +  struct SpecIterator
> +      : llvm::iterator_adaptor_base<
>              SpecIterator<EntryType, SETraits, DeclType>,
>              typename llvm::FoldingSetVector<EntryType>::iterator,
>              typename std::iterator_traits<typename llvm::FoldingSetVector<
>                  EntryType>::iterator>::iterator_category,
>              DeclType *, ptrdiff_t, DeclType *, DeclType *> {
> -    typedef typename SpecIterator::iterator_adaptor_base BaseT;
> -
> -  public:
>      SpecIterator() {}
>      explicit SpecIterator(
>          typename llvm::FoldingSetVector<EntryType>::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; }
>    };
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150201/7fc68948/attachment.html>


More information about the cfe-commits mailing list