dune-fem 2.8.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Dune::Fem::ExplicitFieldVector< T, N > Class Template Reference

#include <dune/fem/common/explicitfieldvector.hh>

Inheritance diagram for Dune::Fem::ExplicitFieldVector< T, N >:
Inheritance graph

Public Member Functions

constexpr ExplicitFieldVector ()
 Constructor making default-initialized vector.
 
template<class... Args, disableCopyMove< ThisType, Args... > = 0, std::enable_if_t< std::is_constructible< BaseType, Args &&... >::value, int > = 0>
 ExplicitFieldVector (Args &&... args)
 
 ExplicitFieldVector (const std::initializer_list< T > &values)
 
template<class C >
 ExplicitFieldVector (const DenseVector< C > &x, typename std::enable_if<(IsFieldVectorSizeCorrect< C, N >::value &&AcceptElementImplicitConstruction< C, T >::value) >::type *dummy=0)
 
template<typename C , std::enable_if_t<(N==1 &&AcceptElementImplicitConstruction< C, T >::value &&std::is_assignable< T, C >::value &&! std::is_base_of< DenseVector< typename FieldTraits< T >::field_type >, T >::value), int > = 0>
ExplicitFieldVectoroperator= (const C &c)
 Assignment operator for scalar.
 
ExplicitFieldVectoroperator= (const ExplicitFieldVector &other)
 copy assignment operator
 
template<typename C , std::enable_if_t< std::is_assignable< T, C >::value, int > = 0>
ExplicitFieldVectoroperator= (const FieldVector< C, N > &other)
 
template<typename C , std::enable_if_t< std::is_assignable< T, C >::value, int > = 0>
ExplicitFieldVectoroperator= (const ExplicitFieldVector< C, N > &other)
 

Detailed Description

template<class T, int N>
class Dune::Fem::ExplicitFieldVector< T, N >

A variant of FieldVector which does not allow for implicit type-conversion from an to everything.

Constructor & Destructor Documentation

◆ ExplicitFieldVector() [1/4]

template<class T , int N>
constexpr Dune::Fem::ExplicitFieldVector< T, N >::ExplicitFieldVector ( )
inlineconstexpr

Constructor making default-initialized vector.

◆ ExplicitFieldVector() [2/4]

template<class T , int N>
template<class... Args, disableCopyMove< ThisType, Args... > = 0, std::enable_if_t< std::is_constructible< BaseType, Args &&... >::value, int > = 0>
Dune::Fem::ExplicitFieldVector< T, N >::ExplicitFieldVector ( Args &&...  args)
inlineexplicit

Redirect any general construction to the base class during explicit conversion

◆ ExplicitFieldVector() [3/4]

template<class T , int N>
Dune::Fem::ExplicitFieldVector< T, N >::ExplicitFieldVector ( const std::initializer_list< T > &  values)
inline

◆ ExplicitFieldVector() [4/4]

template<class T , int N>
template<class C >
Dune::Fem::ExplicitFieldVector< T, N >::ExplicitFieldVector ( const DenseVector< C > &  x,
typename std::enable_if<(IsFieldVectorSizeCorrect< C, N >::value &&AcceptElementImplicitConstruction< C, T >::value) >::type *  dummy = 0 
)
inline

Allow implicit conversion if both vectors are either composed of field-elements of some fields which can be converted into each other or if both vectors are composed of more complicated elements (which can be converted into each other), but do not allow implicit conversion of a FieldVector of scalars into a FieldVector composed of more complicated stuff. In particalar, FunctionSpace::RangeType cannot be implicitly converted to FunctionSpace::HessianRangeType.

Member Function Documentation

◆ operator=() [1/4]

template<class T , int N>
template<typename C , std::enable_if_t<(N==1 &&AcceptElementImplicitConstruction< C, T >::value &&std::is_assignable< T, C >::value &&! std::is_base_of< DenseVector< typename FieldTraits< T >::field_type >, T >::value), int > = 0>
ExplicitFieldVector & Dune::Fem::ExplicitFieldVector< T, N >::operator= ( const C &  c)
inline

Assignment operator for scalar.

◆ operator=() [2/4]

template<class T , int N>
ExplicitFieldVector & Dune::Fem::ExplicitFieldVector< T, N >::operator= ( const ExplicitFieldVector< T, N > &  other)
inline

copy assignment operator

◆ operator=() [3/4]

template<class T , int N>
template<typename C , std::enable_if_t< std::is_assignable< T, C >::value, int > = 0>
ExplicitFieldVector & Dune::Fem::ExplicitFieldVector< T, N >::operator= ( const ExplicitFieldVector< C, N > &  other)
inline

◆ operator=() [4/4]

template<class T , int N>
template<typename C , std::enable_if_t< std::is_assignable< T, C >::value, int > = 0>
ExplicitFieldVector & Dune::Fem::ExplicitFieldVector< T, N >::operator= ( const FieldVector< C, N > &  other)
inline

The documentation for this class was generated from the following file: