Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
concepts.hh 743 B
#ifndef DUNE_MATRIX_VECTOR_CONCEPTS_HH
#define DUNE_MATRIX_VECTOR_CONCEPTS_HH

// though not needed for this file, checking
// for a concept requires this include anyway
#include <dune/common/concept.hh>

namespace Dune {
namespace MatrixVector {
namespace Concept {

struct HasBegin {
  template <class C>
  auto require(C&& c) -> decltype(c.begin());
};


struct HasN {
  template <class C>
  auto require(C&& c) -> decltype(c.N());
};

struct HasResize {
  template <class C>
  auto require(C&& c) -> decltype(c.resize(0));
};

struct HasSize {
  template <class C>
  auto require(C&& c) -> decltype(c.size());
};

} // end namespace Concept
} // end namespace MatrixVector
} // end namespace Dune

#endif // DUNE_MATRIX_VECTOR_CONCEPTS_HH