Skip to content
Snippets Groups Projects
Select Git revision
  • 3a75f982ad53eea9f8a26a8d38e22475473719fc
  • master default
  • releases/2.10
  • feature/update-buildsystem
  • releases/2.9
  • more-features-for-cholmodsolver
  • releases/2.8
  • fix/error-norm
  • releases/2.7
  • implement-overlappingblockgsstep
  • make-getiterationstep-return-shared-ptr
  • feature/blockgssteps_autoCopy
  • releases/2.6-1
  • feature/use-smart-ptr-ignorenodes
  • feature/update-to-clang-7
  • feature/whitespace-fix
  • flexible-loopsolver-max
  • releases/2.5-1
  • feature/incomplete-cholesky-rebased
  • feature/istl-preconditioners
  • feature/optional-ignore
  • subversion->git
22 results

tuplevector.hh

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    tuplevector.hh 1.36 KiB
    // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    // vi: set et ts=4 sw=2 sts=2:
    #ifndef DUNE_SOLVERS_COMMON_TUPLEVECTOR_HH
    #define DUNE_SOLVERS_COMMON_TUPLEVECTOR_HH
    
    #include <tuple>
    
    #include <dune/typetree/utility.hh>
    
    namespace Dune
    {
    namespace Solvers
    {
    
      /**
       * \brief A std::tuple that allows access to its element via operator[]
       */
      template<class... T>
      class TupleVector : public std::tuple<T...>
      {
        using Base = std::tuple<T...>;
    
      public:
    
        /** \brief Construct from a set of arguments */
        template<class... TT>
        constexpr TupleVector(TT&&... tt) :
          Base(std::forward<TT>(tt)...)
        {}
    
        /** \brief Default constructor */
        constexpr TupleVector()
        {}
    
        /** \brief Const access to the tuple elements */
        template<std::size_t i>
        auto operator[](const Dune::TypeTree::index_constant<i>&) const
          ->decltype(std::get<i>(*this))
        {
          return std::get<i>(*this);
        }
    
        /** \brief Non-const access to the tuple elements */
        template<std::size_t i>
        auto operator[](const Dune::TypeTree::index_constant<i>&)
          ->decltype(std::get<i>(*this))
        {
          return std::get<i>(*this);
        }
    
        /** \brief Number of elements of the tuple */
        static constexpr std::size_t size()
        {
          return std::tuple_size<Base>::value;
        }
    
      };
    
    }  // namespace Functions
    
    }  // namespace Dune
    
    #endif