]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Convert most DEAL_II_CONSTEXPR to constexpr. 11122/head
authorDavid Wells <drwells@email.unc.edu>
Fri, 30 Oct 2020 18:02:35 +0000 (14:02 -0400)
committerDavid Wells <drwells@email.unc.edu>
Sat, 24 Apr 2021 17:02:44 +0000 (13:02 -0400)
Now that we require C++14 we can treat this differently. Not everything can be
converted yet - some older compilers encounter internal compiler errors when we
try to mark more things as constexpr.

include/deal.II/base/symmetric_tensor.h
include/deal.II/base/table_indices.h
include/deal.II/base/tensor.h
include/deal.II/base/tensor_accessors.h

index 306987270861433c47053f8d3f1749a7c80249b5..46386b90f02f08e903e79dc85691ad4abf09d162 100644 (file)
@@ -57,16 +57,16 @@ constexpr DEAL_II_ALWAYS_INLINE SymmetricTensor<4, dim, Number>
                                 invert(const SymmetricTensor<4, dim, Number> &);
 
 template <int dim2, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               trace(const SymmetricTensor<2, dim2, Number> &);
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       trace(const SymmetricTensor<2, dim2, Number> &);
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
-                                               deviator(const SymmetricTensor<2, dim, Number> &);
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
+                                       deviator(const SymmetricTensor<2, dim, Number> &);
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               determinant(const SymmetricTensor<2, dim, Number> &);
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       determinant(const SymmetricTensor<2, dim, Number> &);
 
 
 
@@ -410,8 +410,8 @@ namespace internal
       /**
        * Index operator.
        */
-      DEAL_II_CONSTEXPR Accessor<rank, dim, constness, P - 1, Number>
-                        operator[](const unsigned int i);
+      constexpr Accessor<rank, dim, constness, P - 1, Number>
+      operator[](const unsigned int i);
 
       /**
        * Index operator.
@@ -492,7 +492,7 @@ namespace internal
       /**
        * Index operator.
        */
-      DEAL_II_CONSTEXPR reference operator[](const unsigned int);
+      constexpr reference operator[](const unsigned int);
 
       /**
        * Index operator.
@@ -660,8 +660,7 @@ public:
    * the object from the internal namespace is to work around bugs in some
    * older compilers.
    */
-  DEAL_II_CONSTEXPR
-  SymmetricTensor(const Number (&array)[n_independent_components]);
+  constexpr SymmetricTensor(const Number (&array)[n_independent_components]);
 
   /**
    * Copy constructor from tensors with different underlying scalar type. This
@@ -704,8 +703,8 @@ public:
    * @p Number.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator=(const SymmetricTensor<rank_, dim, OtherNumber> &rhs);
+  constexpr SymmetricTensor &
+  operator=(const SymmetricTensor<rank_, dim, OtherNumber> &rhs);
 
   /**
    * This operator assigns a scalar to a tensor. To avoid confusion with what
@@ -713,8 +712,8 @@ public:
    * value allowed for <tt>d</tt>, allowing the intuitive notation
    * $\mathbf A = 0$ to reset all elements of the tensor to zero.
    */
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator=(const Number &d);
+  constexpr SymmetricTensor &
+  operator=(const Number &d);
 
   /**
    * Convert the present symmetric tensor into a full tensor with the same
@@ -738,36 +737,36 @@ public:
    * Add another tensor.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator+=(const SymmetricTensor<rank_, dim, OtherNumber> &);
+  constexpr SymmetricTensor &
+  operator+=(const SymmetricTensor<rank_, dim, OtherNumber> &);
 
   /**
    * Subtract another tensor.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator-=(const SymmetricTensor<rank_, dim, OtherNumber> &);
+  constexpr SymmetricTensor &
+  operator-=(const SymmetricTensor<rank_, dim, OtherNumber> &);
 
   /**
    * Scale the tensor by <tt>factor</tt>, i.e. multiply all components by
    * <tt>factor</tt>.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator*=(const OtherNumber &factor);
+  constexpr SymmetricTensor &
+  operator*=(const OtherNumber &factor);
 
   /**
    * Scale the tensor by <tt>1/factor</tt>.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR SymmetricTensor &
-                    operator/=(const OtherNumber &factor);
+  constexpr SymmetricTensor &
+  operator/=(const OtherNumber &factor);
 
   /**
    * Unary minus operator. Negate all entries of a tensor.
    */
-  DEAL_II_CONSTEXPR SymmetricTensor
-                    operator-() const;
+  constexpr SymmetricTensor
+  operator-() const;
 
   /**
    * Double contraction product between the present symmetric tensor and a
@@ -812,14 +811,14 @@ public:
   /**
    * Return a read-write reference to the indicated element.
    */
-  DEAL_II_CONSTEXPR Number &
-                    operator()(const TableIndices<rank_> &indices);
+  constexpr Number &
+  operator()(const TableIndices<rank_> &indices);
 
   /**
    * Return a @p const reference to the value referred to by the argument.
    */
-  DEAL_II_CONSTEXPR const Number &
-                          operator()(const TableIndices<rank_> &indices) const;
+  constexpr const Number &
+  operator()(const TableIndices<rank_> &indices) const;
 
   /**
    * Access the elements of a row of this symmetric tensor. This function is
@@ -833,7 +832,7 @@ public:
    * Access the elements of a row of this symmetric tensor. This function is
    * called for non-constant tensors.
    */
-  DEAL_II_CONSTEXPR internal::SymmetricTensorAccessors::
+  constexpr internal::SymmetricTensorAccessors::
     Accessor<rank_, dim, false, rank_ - 1, Number>
     operator[](const unsigned int row);
 
@@ -849,7 +848,7 @@ public:
    *
    * Exactly the same as operator().
    */
-  DEAL_II_CONSTEXPR Number &operator[](const TableIndices<rank_> &indices);
+  constexpr Number &operator[](const TableIndices<rank_> &indices);
 
   /**
    * Access to an element according to unrolled index. The function
@@ -857,8 +856,8 @@ public:
    * <tt>s[s.unrolled_to_component_indices(unrolled_index)]</tt>, but more
    * efficiently.
    */
-  DEAL_II_CONSTEXPR const Number &
-                          access_raw_entry(const unsigned int unrolled_index) const;
+  constexpr const Number &
+  access_raw_entry(const unsigned int unrolled_index) const;
 
   /**
    * Access to an element according to unrolled index. The function
@@ -866,8 +865,8 @@ public:
    * <tt>s[s.unrolled_to_component_indices(unrolled_index)]</tt>, but more
    * efficiently.
    */
-  DEAL_II_CONSTEXPR Number &
-                    access_raw_entry(const unsigned int unrolled_index);
+  constexpr Number &
+  access_raw_entry(const unsigned int unrolled_index);
 
   /**
    * Return the Frobenius-norm of a tensor, i.e. the square root of the sum of
@@ -911,7 +910,7 @@ public:
    * and indeed the state where all elements have a zero value is the state
    * right after construction of such an object.
    */
-  DEAL_II_CONSTEXPR void
+  constexpr void
   clear();
 
   /**
@@ -953,16 +952,16 @@ private:
 
   // Make a few more functions friends.
   template <int dim2, typename Number2>
-  friend DEAL_II_CONSTEXPR Number2
-                           trace(const SymmetricTensor<2, dim2, Number2> &d);
+  friend constexpr Number2
+  trace(const SymmetricTensor<2, dim2, Number2> &d);
 
   template <int dim2, typename Number2>
-  friend DEAL_II_CONSTEXPR Number2
-                           determinant(const SymmetricTensor<2, dim2, Number2> &t);
+  friend constexpr Number2
+  determinant(const SymmetricTensor<2, dim2, Number2> &t);
 
   template <int dim2, typename Number2>
-  friend DEAL_II_CONSTEXPR SymmetricTensor<2, dim2, Number2>
-                           deviator(const SymmetricTensor<2, dim2, Number2> &t);
+  friend constexpr SymmetricTensor<2, dim2, Number2>
+  deviator(const SymmetricTensor<2, dim2, Number2> &t);
 
   template <int dim2, typename Number2>
   friend DEAL_II_CONSTEXPR SymmetricTensor<2, dim2, Number2>
@@ -1015,7 +1014,7 @@ namespace internal
 
 
     template <int rank_, int dim, bool constness, int P, typename Number>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+    constexpr inline DEAL_II_ALWAYS_INLINE
         Accessor<rank_, dim, constness, P - 1, Number>
         Accessor<rank_, dim, constness, P, Number>::
         operator[](const unsigned int i)
@@ -1050,7 +1049,7 @@ namespace internal
 
 
     template <int rank_, int dim, bool constness, typename Number>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+    constexpr inline DEAL_II_ALWAYS_INLINE
       typename Accessor<rank_, dim, constness, 1, Number>::reference
         Accessor<rank_, dim, constness, 1, Number>::
         operator[](const unsigned int i)
@@ -1105,7 +1104,7 @@ SymmetricTensor<rank_, dim, Number>::SymmetricTensor(
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
 SymmetricTensor<rank_, dim, Number>::SymmetricTensor(
   const Number (&array)[n_independent_components])
   : data(
@@ -1120,10 +1119,9 @@ SymmetricTensor<rank_, dim, Number>::SymmetricTensor(
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::
-  operator=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+                                       SymmetricTensor<rank_, dim, Number>::
+                                       operator=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
 {
   data = t.data;
   return *this;
@@ -1132,9 +1130,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::operator=(const Number &d)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+SymmetricTensor<rank_, dim, Number>::operator=(const Number &d)
 {
   Assert(numbers::value_is_zero(d),
          ExcMessage("Only assignment with zero is allowed"));
@@ -1151,9 +1148,8 @@ namespace internal
   namespace SymmetricTensorImplementation
   {
     template <int dim, typename Number>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-      dealii::Tensor<2, dim, Number>
-      convert_to_tensor(const dealii::SymmetricTensor<2, dim, Number> &s)
+    constexpr inline DEAL_II_ALWAYS_INLINE dealii::Tensor<2, dim, Number>
+                                           convert_to_tensor(const dealii::SymmetricTensor<2, dim, Number> &s)
     {
       dealii::Tensor<2, dim, Number> t;
 
@@ -1173,8 +1169,8 @@ namespace internal
 
 
     template <int dim, typename Number>
-    DEAL_II_CONSTEXPR dealii::Tensor<4, dim, Number>
-                      convert_to_tensor(const dealii::SymmetricTensor<4, dim, Number> &st)
+    constexpr dealii::Tensor<4, dim, Number>
+    convert_to_tensor(const dealii::SymmetricTensor<4, dim, Number> &st)
     {
       // utilize the symmetry properties of SymmetricTensor<4,dim>
       // discussed in the class documentation to avoid accessing all
@@ -1197,7 +1193,7 @@ namespace internal
     template <typename Number>
     struct Inverse<2, 1, Number>
     {
-      DEAL_II_CONSTEXPR static inline DEAL_II_ALWAYS_INLINE
+      constexpr static inline DEAL_II_ALWAYS_INLINE
         dealii::SymmetricTensor<2, 1, Number>
         value(const dealii::SymmetricTensor<2, 1, Number> &t)
       {
@@ -1213,7 +1209,7 @@ namespace internal
     template <typename Number>
     struct Inverse<2, 2, Number>
     {
-      DEAL_II_CONSTEXPR static inline DEAL_II_ALWAYS_INLINE
+      constexpr static inline DEAL_II_ALWAYS_INLINE
         dealii::SymmetricTensor<2, 2, Number>
         value(const dealii::SymmetricTensor<2, 2, Number> &t)
       {
@@ -1240,7 +1236,7 @@ namespace internal
     template <typename Number>
     struct Inverse<2, 3, Number>
     {
-      DEAL_II_CONSTEXPR static dealii::SymmetricTensor<2, 3, Number>
+      constexpr static dealii::SymmetricTensor<2, 3, Number>
       value(const dealii::SymmetricTensor<2, 3, Number> &t)
       {
         dealii::SymmetricTensor<2, 3, Number> tmp;
@@ -1307,7 +1303,7 @@ namespace internal
     template <typename Number>
     struct Inverse<4, 1, Number>
     {
-      DEAL_II_CONSTEXPR static inline dealii::SymmetricTensor<4, 1, Number>
+      constexpr static inline dealii::SymmetricTensor<4, 1, Number>
       value(const dealii::SymmetricTensor<4, 1, Number> &t)
       {
         dealii::SymmetricTensor<4, 1, Number> tmp;
@@ -1320,7 +1316,7 @@ namespace internal
     template <typename Number>
     struct Inverse<4, 2, Number>
     {
-      DEAL_II_CONSTEXPR static inline dealii::SymmetricTensor<4, 2, Number>
+      constexpr static inline dealii::SymmetricTensor<4, 2, Number>
       value(const dealii::SymmetricTensor<4, 2, Number> &t)
       {
         dealii::SymmetricTensor<4, 2, Number> tmp;
@@ -1526,10 +1522,9 @@ operator!=(const SymmetricTensor<rank_, dim, Number> &t) const
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::
-  operator+=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+                                       SymmetricTensor<rank_, dim, Number>::
+                                       operator+=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
 {
   data += t.data;
   return *this;
@@ -1539,10 +1534,9 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::
-  operator-=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+                                       SymmetricTensor<rank_, dim, Number>::
+                                       operator-=(const SymmetricTensor<rank_, dim, OtherNumber> &t)
 {
   data -= t.data;
   return *this;
@@ -1552,9 +1546,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::operator*=(const OtherNumber &d)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+SymmetricTensor<rank_, dim, Number>::operator*=(const OtherNumber &d)
 {
   data *= d;
   return *this;
@@ -1564,9 +1557,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number> &
-  SymmetricTensor<rank_, dim, Number>::operator/=(const OtherNumber &d)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number> &
+SymmetricTensor<rank_, dim, Number>::operator/=(const OtherNumber &d)
 {
   data /= d;
   return *this;
@@ -1575,9 +1567,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number>
-  SymmetricTensor<rank_, dim, Number>::operator-() const
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number>
+SymmetricTensor<rank_, dim, Number>::operator-() const
 {
   SymmetricTensor tmp = *this;
   tmp.data            = -tmp.data;
@@ -1587,7 +1578,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE void
+constexpr inline DEAL_II_ALWAYS_INLINE void
 SymmetricTensor<rank_, dim, Number>::clear()
 {
   data.clear();
@@ -1809,10 +1800,10 @@ namespace internal
   Type Uninitialized<Type>::value;
 
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number &
-                                                 symmetric_tensor_access(const TableIndices<2> &indices,
-                                                                         typename SymmetricTensorAccessors::
-                                                                           StorageType<2, dim, Number>::base_tensor_type &data)
+  constexpr inline DEAL_II_ALWAYS_INLINE Number &
+                                         symmetric_tensor_access(const TableIndices<2> &indices,
+                                                                 typename SymmetricTensorAccessors::
+                                                                   StorageType<2, dim, Number>::base_tensor_type &data)
   {
     // 1d is very simple and done first
     if (dim == 1)
@@ -1855,10 +1846,10 @@ namespace internal
 
 
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE const Number &
-                                                       symmetric_tensor_access(const TableIndices<2> &indices,
-                                                                               const typename SymmetricTensorAccessors::
-                                                                                 StorageType<2, dim, Number>::base_tensor_type &data)
+  constexpr inline DEAL_II_ALWAYS_INLINE const Number &
+                                               symmetric_tensor_access(const TableIndices<2> &indices,
+                                                                       const typename SymmetricTensorAccessors::
+                                                                         StorageType<2, dim, Number>::base_tensor_type &data)
   {
     // 1d is very simple and done first
     if (dim == 1)
@@ -1901,7 +1892,7 @@ namespace internal
 
 
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline Number &
+  constexpr inline Number &
   symmetric_tensor_access(const TableIndices<4> &indices,
                           typename SymmetricTensorAccessors::
                             StorageType<4, dim, Number>::base_tensor_type &data)
@@ -1948,10 +1939,10 @@ namespace internal
 
 
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE const Number &
-                                                       symmetric_tensor_access(const TableIndices<4> &indices,
-                                                                               const typename SymmetricTensorAccessors::
-                                                                                 StorageType<4, dim, Number>::base_tensor_type &data)
+  constexpr inline DEAL_II_ALWAYS_INLINE const Number &
+                                               symmetric_tensor_access(const TableIndices<4> &indices,
+                                                                       const typename SymmetricTensorAccessors::
+                                                                         StorageType<4, dim, Number>::base_tensor_type &data)
   {
     switch (dim)
       {
@@ -1998,9 +1989,9 @@ namespace internal
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number &
-                                               SymmetricTensor<rank_, dim, Number>::
-                                               operator()(const TableIndices<rank_> &indices)
+constexpr inline DEAL_II_ALWAYS_INLINE Number &
+                                       SymmetricTensor<rank_, dim, Number>::
+                                       operator()(const TableIndices<rank_> &indices)
 {
   for (unsigned int r = 0; r < rank; ++r)
     AssertIndexRange(indices[r], dimension);
@@ -2010,9 +2001,9 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number &
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE const Number &
-                                                     SymmetricTensor<rank_, dim, Number>::
-                                                     operator()(const TableIndices<rank_> &indices) const
+constexpr inline DEAL_II_ALWAYS_INLINE const Number &
+                                             SymmetricTensor<rank_, dim, Number>::
+                                             operator()(const TableIndices<rank_> &indices) const
 {
   for (unsigned int r = 0; r < rank; ++r)
     AssertIndexRange(indices[r], dimension);
@@ -2064,8 +2055,8 @@ constexpr DEAL_II_ALWAYS_INLINE internal::SymmetricTensorAccessors::
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE internal::
-  SymmetricTensorAccessors::Accessor<rank_, dim, false, rank_ - 1, Number>
+constexpr inline DEAL_II_ALWAYS_INLINE internal::SymmetricTensorAccessors::
+  Accessor<rank_, dim, false, rank_ - 1, Number>
     SymmetricTensor<rank_, dim, Number>::operator[](const unsigned int row)
 {
   return internal::SymmetricTensorAccessors::
@@ -2088,9 +2079,9 @@ constexpr DEAL_II_ALWAYS_INLINE const Number &
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number &
-                                               SymmetricTensor<rank_, dim, Number>::
-                                               operator[](const TableIndices<rank_> &indices)
+constexpr inline DEAL_II_ALWAYS_INLINE Number &
+                                       SymmetricTensor<rank_, dim, Number>::
+                                       operator[](const TableIndices<rank_> &indices)
 {
   return operator()(indices);
 }
@@ -2161,7 +2152,7 @@ namespace internal
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline const Number &
+constexpr inline const Number &
 SymmetricTensor<rank_, dim, Number>::access_raw_entry(
   const unsigned int index) const
 {
@@ -2173,7 +2164,7 @@ SymmetricTensor<rank_, dim, Number>::access_raw_entry(
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline Number &
+constexpr inline Number &
 SymmetricTensor<rank_, dim, Number>::access_raw_entry(const unsigned int index)
 {
   AssertIndexRange(index, n_independent_components);
@@ -2186,7 +2177,7 @@ SymmetricTensor<rank_, dim, Number>::access_raw_entry(const unsigned int index)
 namespace internal
 {
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline typename numbers::NumberTraits<Number>::real_type
+  constexpr inline typename numbers::NumberTraits<Number>::real_type
   compute_norm(const typename SymmetricTensorAccessors::
                  StorageType<2, dim, Number>::base_tensor_type &data)
   {
@@ -2230,7 +2221,7 @@ namespace internal
 
 
   template <int dim, typename Number>
-  DEAL_II_CONSTEXPR inline typename numbers::NumberTraits<Number>::real_type
+  constexpr inline typename numbers::NumberTraits<Number>::real_type
   compute_norm(const typename SymmetricTensorAccessors::
                  StorageType<4, dim, Number>::base_tensor_type &data)
   {
@@ -2291,7 +2282,7 @@ namespace internal
     //
     // this function is for rank-2 tensors
     template <int dim>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE unsigned int
+    constexpr inline DEAL_II_ALWAYS_INLINE unsigned int
     component_to_unrolled_index(const TableIndices<2> &indices)
     {
       AssertIndexRange(indices[0], dim);
@@ -2355,7 +2346,7 @@ namespace internal
     // this function is for tensors of ranks not already handled
     // above
     template <int dim, int rank_>
-    DEAL_II_CONSTEXPR inline unsigned int
+    constexpr inline unsigned int
     component_to_unrolled_index(const TableIndices<rank_> &indices)
     {
       (void)indices;
@@ -2389,9 +2380,9 @@ namespace internal
     //
     // this function is for rank-2 tensors
     template <int dim>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE TableIndices<2>
-                                                   unrolled_to_component_indices(const unsigned int i,
-                                                                                 const std::integral_constant<int, 2> &)
+    constexpr inline DEAL_II_ALWAYS_INLINE TableIndices<2>
+                                           unrolled_to_component_indices(const unsigned int i,
+                                                                         const std::integral_constant<int, 2> &)
     {
       Assert(
         (i < dealii::SymmetricTensor<2, dim, double>::n_independent_components),
@@ -2449,7 +2440,7 @@ namespace internal
     // this function is for tensors of a rank not already handled
     // above
     template <int dim, int rank_>
-    DEAL_II_CONSTEXPR inline
+    constexpr inline
       typename std::enable_if<rank_ != 2, TableIndices<rank_>>::type
       unrolled_to_component_indices(const unsigned int i,
                                     const std::integral_constant<int, rank_> &)
@@ -2507,7 +2498,7 @@ SymmetricTensor<rank_, dim, Number>::serialize(Archive &ar, const unsigned int)
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   SymmetricTensor<rank_, dim, typename ProductType<Number, OtherNumber>::type>
   operator+(const SymmetricTensor<rank_, dim, Number> &     left,
             const SymmetricTensor<rank_, dim, OtherNumber> &right)
@@ -2532,7 +2523,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   SymmetricTensor<rank_, dim, typename ProductType<Number, OtherNumber>::type>
   operator-(const SymmetricTensor<rank_, dim, Number> &     left,
             const SymmetricTensor<rank_, dim, OtherNumber> &right)
@@ -2627,8 +2618,8 @@ constexpr DEAL_II_ALWAYS_INLINE
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               determinant(const SymmetricTensor<2, dim, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       determinant(const SymmetricTensor<2, dim, Number> &t)
 {
   switch (dim)
     {
@@ -2685,8 +2676,8 @@ constexpr DEAL_II_ALWAYS_INLINE Number
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               trace(const SymmetricTensor<2, dim, Number> &d)
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       trace(const SymmetricTensor<2, dim, Number> &d)
 {
   Number t = d.data[0];
   for (unsigned int i = 1; i < dim; ++i)
@@ -3194,8 +3185,8 @@ constexpr DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number>
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
-                                               deviator(const SymmetricTensor<2, dim, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
+                                       deviator(const SymmetricTensor<2, dim, Number> &t)
 {
   SymmetricTensor<2, dim, Number> tmp = t;
 
@@ -3471,7 +3462,7 @@ invert(const SymmetricTensor<4, dim, Number> &t)
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline SymmetricTensor<4, dim, Number>
+constexpr inline SymmetricTensor<4, dim, Number>
 outer_product(const SymmetricTensor<2, dim, Number> &t1,
               const SymmetricTensor<2, dim, Number> &t2)
 {
@@ -3497,8 +3488,8 @@ outer_product(const SymmetricTensor<2, dim, Number> &t1,
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
-                                               symmetrize(const Tensor<2, dim, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
+                                       symmetrize(const Tensor<2, dim, Number> &t)
 {
   SymmetricTensor<2, dim, Number> result;
   for (unsigned int d = 0; d < dim; ++d)
@@ -3521,9 +3512,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<2, dim, Number>
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-  SymmetricTensor<rank_, dim, Number>
-  operator*(const SymmetricTensor<rank_, dim, Number> &t, const Number &factor)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number>
+                                       operator*(const SymmetricTensor<rank_, dim, Number> &t, const Number &factor)
 {
   SymmetricTensor<rank_, dim, Number> tt = t;
   tt *= factor;
@@ -3575,7 +3565,7 @@ constexpr DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim, Number>
  * @relatesalso EnableIfScalar
  */
 template <int rank_, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<
   rank_,
   dim,
   typename ProductType<Number,
@@ -3605,7 +3595,7 @@ operator*(const SymmetricTensor<rank_, dim, Number> &t,
  * @relatesalso EnableIfScalar
  */
 template <int rank_, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<
   rank_,
   dim,
   typename ProductType<OtherNumber,
@@ -3625,7 +3615,7 @@ operator*(const Number &                                  factor,
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline SymmetricTensor<
+constexpr inline SymmetricTensor<
   rank_,
   dim,
   typename ProductType<Number,
@@ -3648,8 +3638,8 @@ operator/(const SymmetricTensor<rank_, dim, Number> &t,
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
-                                               operator*(const SymmetricTensor<rank_, dim> &t, const double factor)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
+                                       operator*(const SymmetricTensor<rank_, dim> &t, const double factor)
 {
   SymmetricTensor<rank_, dim> tt(t);
   tt *= factor;
@@ -3665,8 +3655,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
-                                               operator*(const double factor, const SymmetricTensor<rank_, dim> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
+                                       operator*(const double factor, const SymmetricTensor<rank_, dim> &t)
 {
   SymmetricTensor<rank_, dim> tt(t);
   tt *= factor;
@@ -3681,7 +3671,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE SymmetricTensor<rank_, dim>
  * @relatesalso SymmetricTensor
  */
 template <int rank_, int dim>
-DEAL_II_CONSTEXPR inline SymmetricTensor<rank_, dim>
+constexpr inline SymmetricTensor<rank_, dim>
 operator/(const SymmetricTensor<rank_, dim> &t, const double factor)
 {
   SymmetricTensor<rank_, dim> tt(t);
@@ -3721,7 +3711,7 @@ scalar_product(const SymmetricTensor<2, dim, Number> &     t1,
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   typename ProductType<Number, OtherNumber>::type
   scalar_product(const SymmetricTensor<2, dim, Number> &t1,
                  const Tensor<2, dim, OtherNumber> &    t2)
@@ -3772,7 +3762,7 @@ scalar_product(const Tensor<2, dim, Number> &              t1,
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE void double_contract(
+constexpr inline DEAL_II_ALWAYS_INLINE void double_contract(
   SymmetricTensor<2, 1, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<4, 1, Number> &                                   t,
   const SymmetricTensor<2, 1, OtherNumber> &                              s)
@@ -3797,7 +3787,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline void double_contract(
+constexpr inline void double_contract(
   SymmetricTensor<2, 1, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<2, 1, Number> &                                   s,
   const SymmetricTensor<4, 1, OtherNumber> &                              t)
@@ -3822,7 +3812,7 @@ DEAL_II_CONSTEXPR inline void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline void double_contract(
+constexpr inline void double_contract(
   SymmetricTensor<2, 2, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<4, 2, Number> &                                   t,
   const SymmetricTensor<2, 2, OtherNumber> &                              s)
@@ -3852,7 +3842,7 @@ DEAL_II_CONSTEXPR inline void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline void double_contract(
+constexpr inline void double_contract(
   SymmetricTensor<2, 2, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<2, 2, Number> &                                   s,
   const SymmetricTensor<4, 2, OtherNumber> &                              t)
@@ -3882,7 +3872,7 @@ DEAL_II_CONSTEXPR inline void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline void double_contract(
+constexpr inline void double_contract(
   SymmetricTensor<2, 3, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<4, 3, Number> &                                   t,
   const SymmetricTensor<2, 3, OtherNumber> &                              s)
@@ -3913,7 +3903,7 @@ DEAL_II_CONSTEXPR inline void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline void double_contract(
+constexpr inline void double_contract(
   SymmetricTensor<2, 3, typename ProductType<Number, OtherNumber>::type> &tmp,
   const SymmetricTensor<2, 3, Number> &                                   s,
   const SymmetricTensor<4, 3, OtherNumber> &                              t)
@@ -3936,10 +3926,9 @@ DEAL_II_CONSTEXPR inline void double_contract(
  * @relatesalso SymmetricTensor
  */
 template <int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR
-  Tensor<1, dim, typename ProductType<Number, OtherNumber>::type>
-  operator*(const SymmetricTensor<2, dim, Number> &src1,
-            const Tensor<1, dim, OtherNumber> &    src2)
+constexpr Tensor<1, dim, typename ProductType<Number, OtherNumber>::type>
+operator*(const SymmetricTensor<2, dim, Number> &src1,
+          const Tensor<1, dim, OtherNumber> &    src2)
 {
   Tensor<1, dim, typename ProductType<Number, OtherNumber>::type> dest;
   for (unsigned int i = 0; i < dim; ++i)
index a72f4b65be4a8033530cb24b9b379d1157a0b690..78a38ee9c42365c874a8e94dddb6c667c97e38a5 100644 (file)
@@ -66,12 +66,12 @@ public:
   /**
    * Read-only access the value of the <tt>i</tt>th index.
    */
-  DEAL_II_CONSTEXPR std::size_t operator[](const unsigned int i) const;
+  constexpr std::size_t operator[](const unsigned int i) const;
 
   /**
    * Write access the value of the <tt>i</tt>th index.
    */
-  DEAL_II_CONSTEXPR std::size_t &operator[](const unsigned int i);
+  constexpr std::size_t &operator[](const unsigned int i);
 
   /**
    * Compare two index fields for equality.
@@ -125,8 +125,8 @@ constexpr TableIndices<N>::TableIndices(const T... args)
 
 
 template <int N>
-DEAL_II_CONSTEXPR inline std::size_t TableIndices<N>::
-                                     operator[](const unsigned int i) const
+constexpr inline std::size_t TableIndices<N>::
+                             operator[](const unsigned int i) const
 {
   AssertIndexRange(i, N);
   return indices[i];
@@ -134,8 +134,7 @@ DEAL_II_CONSTEXPR inline std::size_t TableIndices<N>::
 
 
 template <int N>
-DEAL_II_CONSTEXPR inline std::size_t &TableIndices<N>::
-                                      operator[](const unsigned int i)
+constexpr inline std::size_t &TableIndices<N>::operator[](const unsigned int i)
 {
   AssertIndexRange(i, N);
   return indices[i];
index f5894dc94498b8c313a36681549ea59d9db2c391..c07b062bcf8e44da44c226aba663f72c70706abb 100644 (file)
@@ -200,7 +200,7 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV operator Number &();
+  constexpr DEAL_II_CUDA_HOST_DEV operator Number &();
 
   /**
    * Return a reference to the encapsulated Number object. Since rank-0
@@ -210,7 +210,7 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV operator const Number &() const;
+  constexpr DEAL_II_CUDA_HOST_DEV operator const Number &() const;
 
   /**
    * Assignment from tensors with different underlying scalar type. This
@@ -220,8 +220,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator=(const Tensor<0, dim, OtherNumber> &rhs);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator=(const Tensor<0, dim, OtherNumber> &rhs);
 
 #ifdef __INTEL_COMPILER
   /**
@@ -232,8 +232,8 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator=(const Tensor<0, dim, Number> &rhs);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator=(const Tensor<0, dim, Number> &rhs);
 #endif
 
   /**
@@ -243,14 +243,14 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator=(const OtherNumber &d);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator=(const OtherNumber &d);
 
   /**
    * Test for equality of two tensors.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR bool
+  constexpr bool
   operator==(const Tensor<0, dim, OtherNumber> &rhs) const;
 
   /**
@@ -266,8 +266,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator+=(const Tensor<0, dim, OtherNumber> &rhs);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator+=(const Tensor<0, dim, OtherNumber> &rhs);
 
   /**
    * Subtract another scalar.
@@ -275,8 +275,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator-=(const Tensor<0, dim, OtherNumber> &rhs);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator-=(const Tensor<0, dim, OtherNumber> &rhs);
 
   /**
    * Multiply the scalar with a <tt>factor</tt>.
@@ -284,8 +284,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator*=(const OtherNumber &factor);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator*=(const OtherNumber &factor);
 
   /**
    * Divide the scalar by <tt>factor</tt>.
@@ -293,8 +293,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator/=(const OtherNumber &factor);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator/=(const OtherNumber &factor);
 
   /**
    * Tensor with inverted entries.
@@ -316,7 +316,7 @@ public:
    * and indeed the state where all elements have a zero value is the state
    * right after construction of such an object.
    */
-  DEAL_II_CONSTEXPR void
+  constexpr void
   clear();
 
   /**
@@ -333,8 +333,8 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV real_type
-                                          norm_square() const;
+  constexpr DEAL_II_CUDA_HOST_DEV real_type
+                                  norm_square() const;
 
   /**
    * Read or write the data of this object to or from a stream for the purpose
@@ -552,8 +552,7 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV value_type &
-                                          operator[](const unsigned int i);
+  constexpr DEAL_II_CUDA_HOST_DEV value_type &operator[](const unsigned int i);
 
   /**
    * Read-only access operator.
@@ -566,13 +565,12 @@ public:
   /**
    * Read access using TableIndices <tt>indices</tt>
    */
-  DEAL_II_CONSTEXPR const Number &
-                          operator[](const TableIndices<rank_> &indices) const;
+  constexpr const Number &operator[](const TableIndices<rank_> &indices) const;
 
   /**
    * Read and write access using TableIndices <tt>indices</tt>
    */
-  DEAL_II_CONSTEXPR Number &operator[](const TableIndices<rank_> &indices);
+  constexpr Number &operator[](const TableIndices<rank_> &indices);
 
   /**
    * Return a pointer to the first element of the underlying storage.
@@ -606,8 +604,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator=(const Tensor<rank_, dim, OtherNumber> &rhs);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator=(const Tensor<rank_, dim, OtherNumber> &rhs);
 
   /**
    * This operator assigns a scalar to a tensor. To avoid confusion with what
@@ -615,14 +613,14 @@ public:
    * value allowed for <tt>d</tt>, allowing the intuitive notation
    * <tt>t=0</tt> to reset all elements of the tensor to zero.
    */
-  DEAL_II_CONSTEXPR Tensor &
-                    operator=(const Number &d);
+  constexpr Tensor &
+  operator=(const Number &d);
 
   /**
    * Test for equality of two tensors.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR bool
+  constexpr bool
   operator==(const Tensor<rank_, dim, OtherNumber> &) const;
 
   /**
@@ -638,8 +636,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator+=(const Tensor<rank_, dim, OtherNumber> &);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator+=(const Tensor<rank_, dim, OtherNumber> &);
 
   /**
    * Subtract another tensor.
@@ -647,8 +645,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator-=(const Tensor<rank_, dim, OtherNumber> &);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator-=(const Tensor<rank_, dim, OtherNumber> &);
 
   /**
    * Scale the tensor by <tt>factor</tt>, i.e. multiply all components by
@@ -657,8 +655,8 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator*=(const OtherNumber &factor);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator*=(const OtherNumber &factor);
 
   /**
    * Scale the vector by <tt>1/factor</tt>.
@@ -666,16 +664,16 @@ public:
    * @note This function can also be used in CUDA device code.
    */
   template <typename OtherNumber>
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor &
-                                          operator/=(const OtherNumber &factor);
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor &
+                                  operator/=(const OtherNumber &factor);
 
   /**
    * Unary minus operator. Negate all entries of a tensor.
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV Tensor
-                                          operator-() const;
+  constexpr DEAL_II_CUDA_HOST_DEV Tensor
+                                  operator-() const;
 
   /**
    * Reset all values to zero.
@@ -689,7 +687,7 @@ public:
    * and indeed the state where all elements have a zero value is the state
    * right after construction of such an object.
    */
-  DEAL_II_CONSTEXPR void
+  constexpr void
   clear();
 
   /**
@@ -709,7 +707,7 @@ public:
    *
    * @note This function can also be used in CUDA device code.
    */
-  DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV
+  constexpr DEAL_II_CUDA_HOST_DEV
     typename numbers::NumberTraits<Number>::real_type
     norm_square() const;
 
@@ -728,7 +726,7 @@ public:
    * Return an unrolled index in the range $[0,\text{dim}^{\text{rank}}-1]$
    * for the element of the tensor indexed by the argument to the function.
    */
-  static DEAL_II_CONSTEXPR unsigned int
+  static constexpr unsigned int
   component_to_unrolled_index(const TableIndices<rank_> &indices);
 
   /**
@@ -736,8 +734,8 @@ public:
    * $[0, \text{dim}^{\text{rank}}-1]$, return which set of indices it would
    * correspond to.
    */
-  static DEAL_II_CONSTEXPR TableIndices<rank_>
-                           unrolled_to_component_indices(const unsigned int i);
+  static constexpr TableIndices<rank_>
+  unrolled_to_component_indices(const unsigned int i);
 
   /**
    * Determine an estimate for the memory consumption (in bytes) of this
@@ -846,8 +844,8 @@ namespace internal
       return t;
     }
 
-    static DEAL_II_CONSTEXPR DEAL_II_ALWAYS_INLINE Tensor<rank, dim, T>
-                                                   value(const T &t)
+    static constexpr DEAL_II_ALWAYS_INLINE Tensor<rank, dim, T>
+                                           value(const T &t)
     {
       Tensor<rank, dim, T> tmp;
       tmp = t;
@@ -925,7 +923,7 @@ Tensor<0, dim, Number>::end_raw() const
 
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number>::operator Number &()
 {
   // We cannot use Assert inside a CUDA kernel
@@ -938,7 +936,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number>::operator const Number &() const
 {
   // We cannot use Assert inside a CUDA kernel
@@ -952,7 +950,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator=(const Tensor<0, dim, OtherNumber> &p)
 {
@@ -963,7 +961,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 #  ifdef __INTEL_COMPILER
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator=(const Tensor<0, dim, Number> &p)
 {
@@ -975,7 +973,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator=(const OtherNumber &d)
 {
@@ -986,7 +984,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline bool
+constexpr inline bool
 Tensor<0, dim, Number>::operator==(const Tensor<0, dim, OtherNumber> &p) const
 {
 #  if defined(DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING)
@@ -1012,7 +1010,7 @@ Tensor<0, dim, Number>::operator!=(const Tensor<0, dim, OtherNumber> &p) const
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator+=(const Tensor<0, dim, OtherNumber> &p)
 {
@@ -1023,7 +1021,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator-=(const Tensor<0, dim, OtherNumber> &p)
 {
@@ -1038,16 +1036,16 @@ namespace internal
   namespace ComplexWorkaround
   {
     template <typename Number, typename OtherNumber>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV void
-                                                   multiply_assign_scalar(Number &val, const OtherNumber &s)
+    constexpr inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV void
+                                           multiply_assign_scalar(Number &val, const OtherNumber &s)
     {
       val *= s;
     }
 
 #  ifdef __CUDA_ARCH__
     template <typename Number, typename OtherNumber>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV void
-                                                   multiply_assign_scalar(std::complex<Number> &, const OtherNumber &)
+    constexpr inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV void
+                                           multiply_assign_scalar(std::complex<Number> &, const OtherNumber &)
     {
       printf("This function is not implemented for std::complex<Number>!\n");
       assert(false);
@@ -1059,7 +1057,7 @@ namespace internal
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
   Tensor<0, dim, Number>::operator*=(const OtherNumber &s)
 {
@@ -1071,7 +1069,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
+constexpr inline DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
 Tensor<0, dim, Number>::operator/=(const OtherNumber &s)
 {
   value /= s;
@@ -1098,7 +1096,7 @@ Tensor<0, dim, Number>::norm() const
 
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
   typename Tensor<0, dim, Number>::real_type
   Tensor<0, dim, Number>::norm_square() const
 {
@@ -1125,7 +1123,7 @@ Tensor<0, dim, Number>::unroll_recursion(Vector<OtherNumber> &result,
 
 
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline void
+constexpr inline void
 Tensor<0, dim, Number>::clear()
 {
   // Some auto-differentiable numbers need explicit
@@ -1227,7 +1225,7 @@ namespace internal
   namespace TensorSubscriptor
   {
     template <typename ArrayElementType, int dim>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+    constexpr inline DEAL_II_ALWAYS_INLINE
       DEAL_II_CUDA_HOST_DEV ArrayElementType &
                             subscript(ArrayElementType * values,
                                       const unsigned int i,
@@ -1255,7 +1253,7 @@ namespace internal
     Type Uninitialized<Type>::value;
 
     template <typename ArrayElementType>
-    DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+    constexpr inline DEAL_II_ALWAYS_INLINE
       DEAL_II_CUDA_HOST_DEV ArrayElementType &
                             subscript(ArrayElementType *,
                                       const unsigned int,
@@ -1275,7 +1273,7 @@ namespace internal
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE     DEAL_II_CUDA_HOST_DEV
+constexpr inline DEAL_II_ALWAYS_INLINE             DEAL_II_CUDA_HOST_DEV
   typename Tensor<rank_, dim, Number>::value_type &Tensor<rank_, dim, Number>::
                                                    operator[](const unsigned int i)
 {
@@ -1298,9 +1296,9 @@ constexpr DEAL_II_ALWAYS_INLINE
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE const Number &
-                                                     Tensor<rank_, dim, Number>::
-                                                     operator[](const TableIndices<rank_> &indices) const
+constexpr inline DEAL_II_ALWAYS_INLINE const Number &
+                                             Tensor<rank_, dim, Number>::
+                                             operator[](const TableIndices<rank_> &indices) const
 {
 #  ifndef DEAL_II_COMPILER_CUDA_AWARE
   Assert(dim != 0,
@@ -1313,8 +1311,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE const Number &
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number &
-  Tensor<rank_, dim, Number>::operator[](const TableIndices<rank_> &indices)
+constexpr inline DEAL_II_ALWAYS_INLINE Number &Tensor<rank_, dim, Number>::
+                                               operator[](const TableIndices<rank_> &indices)
 {
 #  ifndef DEAL_II_COMPILER_CUDA_AWARE
   Assert(dim != 0,
@@ -1366,7 +1364,7 @@ Tensor<rank_, dim, Number>::end_raw() const
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<rank_, dim, Number> &
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<rank_, dim, Number> &
 Tensor<rank_, dim, Number>::operator=(const Tensor<rank_, dim, OtherNumber> &t)
 {
   // The following loop could be written more concisely using std::copy, but
@@ -1378,7 +1376,7 @@ Tensor<rank_, dim, Number>::operator=(const Tensor<rank_, dim, OtherNumber> &t)
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<rank_, dim, Number> &
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<rank_, dim, Number> &
 Tensor<rank_, dim, Number>::operator=(const Number &d)
 {
   Assert(numbers::value_is_zero(d), ExcScalarAssignmentOnlyForZeroValue());
@@ -1392,7 +1390,7 @@ Tensor<rank_, dim, Number>::operator=(const Number &d)
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline bool
+constexpr inline bool
 Tensor<rank_, dim, Number>::
 operator==(const Tensor<rank_, dim, OtherNumber> &p) const
 {
@@ -1410,7 +1408,7 @@ operator==(const Tensor<rank_, dim, OtherNumber> &p) const
 // implement this function here
 template <>
 template <>
-DEAL_II_CONSTEXPR inline bool
+constexpr inline bool
 Tensor<1, 0, double>::operator==(const Tensor<1, 0, double> &) const
 {
   return true;
@@ -1429,7 +1427,7 @@ operator!=(const Tensor<rank_, dim, OtherNumber> &p) const
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<rank_, dim, Number> &
                         Tensor<rank_, dim, Number>::
                         operator+=(const Tensor<rank_, dim, OtherNumber> &p)
@@ -1442,7 +1440,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<rank_, dim, Number> &
                         Tensor<rank_, dim, Number>::
                         operator-=(const Tensor<rank_, dim, OtherNumber> &p)
@@ -1455,7 +1453,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<rank_, dim, Number> &
   Tensor<rank_, dim, Number>::operator*=(const OtherNumber &s)
 {
@@ -1478,9 +1476,9 @@ namespace internal
                   typename ProductType<Number, OtherNumber>::type>::value &&
                   !std::is_same<Number, Differentiation::SD::Expression>::value,
                 int>::type = 0>
-    DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE void
-                      division_operator(Tensor<rank, dim, Number> (&t)[dim],
-                                        const OtherNumber &factor)
+    constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE void
+    division_operator(Tensor<rank, dim, Number> (&t)[dim],
+                      const OtherNumber &factor)
     {
       const Number inverse_factor = Number(1.) / factor;
       // recurse over the base objects
@@ -1498,9 +1496,9 @@ namespace internal
                   typename ProductType<Number, OtherNumber>::type>::value ||
                   std::is_same<Number, Differentiation::SD::Expression>::value,
                 int>::type = 0>
-    DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE void
-                      division_operator(Tensor<rank, dim, Number> (&t)[dim],
-                                        const OtherNumber &factor)
+    constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE void
+    division_operator(Tensor<rank, dim, Number> (&t)[dim],
+                      const OtherNumber &factor)
     {
       // recurse over the base objects
       for (unsigned int d = 0; d < dim; ++d)
@@ -1512,7 +1510,7 @@ namespace internal
 
 template <int rank_, int dim, typename Number>
 template <typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<rank_, dim, Number> &
   Tensor<rank_, dim, Number>::operator/=(const OtherNumber &s)
 {
@@ -1522,7 +1520,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   DEAL_II_CUDA_HOST_DEV Tensor<rank_, dim, Number>
   Tensor<rank_, dim, Number>::operator-() const
 {
@@ -1544,7 +1542,7 @@ Tensor<rank_, dim, Number>::norm() const
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV
+constexpr inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV
   typename numbers::NumberTraits<Number>::real_type
   Tensor<rank_, dim, Number>::norm_square() const
 {
@@ -1582,7 +1580,7 @@ Tensor<rank_, dim, Number>::unroll_recursion(Vector<OtherNumber> &result,
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline unsigned int
+constexpr inline unsigned int
 Tensor<rank_, dim, Number>::component_to_unrolled_index(
   const TableIndices<rank_> &indices)
 {
@@ -1601,7 +1599,7 @@ namespace internal
   // and rank=2. Make sure we don't have compiler warnings.
 
   template <int dim>
-  inline DEAL_II_CONSTEXPR unsigned int
+  inline constexpr unsigned int
   mod(const unsigned int x)
   {
     return x % dim;
@@ -1616,7 +1614,7 @@ namespace internal
   }
 
   template <int dim>
-  inline DEAL_II_CONSTEXPR unsigned int
+  inline constexpr unsigned int
   div(const unsigned int x)
   {
     return x / dim;
@@ -1635,7 +1633,7 @@ namespace internal
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline TableIndices<rank_>
+constexpr inline TableIndices<rank_>
 Tensor<rank_, dim, Number>::unrolled_to_component_indices(const unsigned int i)
 {
   AssertIndexRange(i, n_independent_components);
@@ -1655,7 +1653,7 @@ Tensor<rank_, dim, Number>::unrolled_to_component_indices(const unsigned int i)
 
 
 template <int rank_, int dim, typename Number>
-DEAL_II_CONSTEXPR inline void
+constexpr inline void
 Tensor<rank_, dim, Number>::clear()
 {
   for (unsigned int i = 0; i < dim; ++i)
@@ -1747,7 +1745,7 @@ operator<<(std::ostream &out, const Tensor<0, dim, Number> &p)
  * @relatesalso Tensor
  */
 template <int dim, typename Number, typename Other>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
   typename ProductType<Other, Number>::type
   operator*(const Other &object, const Tensor<0, dim, Number> &t)
 {
@@ -1767,7 +1765,7 @@ DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int dim, typename Number, typename Other>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
   typename ProductType<Number, Other>::type
   operator*(const Tensor<0, dim, Number> &t, const Other &object)
 {
@@ -1863,12 +1861,12 @@ constexpr DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                  Tensor<rank,
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+  Tensor<rank,
          dim,
          typename ProductType<Number,
                               typename EnableIfScalar<OtherNumber>::type>::type>
-                  operator*(const Tensor<rank, dim, Number> &t, const OtherNumber &factor)
+  operator*(const Tensor<rank, dim, Number> &t, const OtherNumber &factor)
 {
   // recurse over the base objects
   Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tt;
@@ -1891,12 +1889,12 @@ DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CUDA_HOST_DEV DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
-                      Tensor<rank,
+DEAL_II_CUDA_HOST_DEV constexpr inline DEAL_II_ALWAYS_INLINE
+  Tensor<rank,
          dim,
          typename ProductType<typename EnableIfScalar<Number>::type,
                               OtherNumber>::type>
-                      operator*(const Number &factor, const Tensor<rank, dim, OtherNumber> &t)
+  operator*(const Number &factor, const Tensor<rank, dim, OtherNumber> &t)
 {
   // simply forward to the operator above
   return t * factor;
@@ -1915,10 +1913,10 @@ namespace internal
                 !std::is_integral<
                   typename ProductType<Number, OtherNumber>::type>::value,
                 int>::type = 0>
-    DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                      Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
-                      division_operator(const Tensor<rank, dim, Number> &t,
-                                        const OtherNumber &              factor)
+    constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+      Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
+      division_operator(const Tensor<rank, dim, Number> &t,
+                        const OtherNumber &              factor)
     {
       Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tt;
       const Number inverse_factor = Number(1.) / factor;
@@ -1937,10 +1935,10 @@ namespace internal
                 std::is_integral<
                   typename ProductType<Number, OtherNumber>::type>::value,
                 int>::type = 0>
-    DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                      Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
-                      division_operator(const Tensor<rank, dim, Number> &t,
-                                        const OtherNumber &              factor)
+    constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+      Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
+      division_operator(const Tensor<rank, dim, Number> &t,
+                        const OtherNumber &              factor)
     {
       Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tt;
       // recurse over the base objects
@@ -1962,12 +1960,12 @@ namespace internal
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                  Tensor<rank,
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+  Tensor<rank,
          dim,
          typename ProductType<Number,
                               typename EnableIfScalar<OtherNumber>::type>::type>
-                  operator/(const Tensor<rank, dim, Number> &t, const OtherNumber &factor)
+  operator/(const Tensor<rank, dim, Number> &t, const OtherNumber &factor)
 {
   return internal::TensorImplementation::division_operator(t, factor);
 }
@@ -1983,9 +1981,9 @@ DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                  Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
-                  operator+(const Tensor<rank, dim, Number> &     p,
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+  Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
+  operator+(const Tensor<rank, dim, Number> &     p,
             const Tensor<rank, dim, OtherNumber> &q)
 {
   Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tmp(p);
@@ -2007,9 +2005,9 @@ DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
-                  Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
-                  operator-(const Tensor<rank, dim, Number> &     p,
+constexpr DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
+  Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
+  operator-(const Tensor<rank, dim, Number> &     p,
             const Tensor<rank, dim, OtherNumber> &q)
 {
   Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tmp(p);
@@ -2027,10 +2025,10 @@ DEAL_II_CONSTEXPR DEAL_II_CUDA_HOST_DEV inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int dim, typename Number, typename OtherNumber>
-inline DEAL_II_CONSTEXPR DEAL_II_ALWAYS_INLINE
-                         Tensor<0, dim, typename ProductType<Number, OtherNumber>::type>
-                         schur_product(const Tensor<0, dim, Number> &     src1,
-                                       const Tensor<0, dim, OtherNumber> &src2)
+inline constexpr DEAL_II_ALWAYS_INLINE
+  Tensor<0, dim, typename ProductType<Number, OtherNumber>::type>
+  schur_product(const Tensor<0, dim, Number> &     src1,
+                const Tensor<0, dim, OtherNumber> &src2)
 {
   Tensor<0, dim, typename ProductType<Number, OtherNumber>::type> tmp(src1);
 
@@ -2056,10 +2054,10 @@ inline DEAL_II_CONSTEXPR DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-inline DEAL_II_CONSTEXPR DEAL_II_ALWAYS_INLINE
-                         Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
-                         schur_product(const Tensor<rank, dim, Number> &     src1,
-                                       const Tensor<rank, dim, OtherNumber> &src2)
+inline constexpr DEAL_II_ALWAYS_INLINE
+  Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
+  schur_product(const Tensor<rank, dim, Number> &     src1,
+                const Tensor<rank, dim, OtherNumber> &src2)
 {
   Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type> tmp;
 
@@ -2105,7 +2103,7 @@ template <int rank_1,
           typename Number,
           typename OtherNumber,
           typename = typename std::enable_if<rank_1 >= 1 && rank_2 >= 1>::type>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   typename Tensor<rank_1 + rank_2 - 2,
                   dim,
                   typename ProductType<Number, OtherNumber>::type>::tensor_type
@@ -2161,7 +2159,7 @@ template <int index_1,
           int dim,
           typename Number,
           typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   typename Tensor<rank_1 + rank_2 - 2,
                   dim,
                   typename ProductType<Number, OtherNumber>::type>::tensor_type
@@ -2179,11 +2177,13 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
   using namespace TensorAccessors::internal;
 
   // Reorder index_1 to the end of src1:
-  ReorderedIndexView<index_1, rank_1, const Tensor<rank_1, dim, Number>>
+  const ReorderedIndexView<index_1, rank_1, const Tensor<rank_1, dim, Number>>
     reord_01 = reordered_index_view<index_1, rank_1>(src1);
 
   // Reorder index_2 to the end of src2:
-  ReorderedIndexView<index_2, rank_2, const Tensor<rank_2, dim, OtherNumber>>
+  const ReorderedIndexView<index_2,
+                           rank_2,
+                           const Tensor<rank_2, dim, OtherNumber>>
     reord_02 = reordered_index_view<index_2, rank_2>(src2);
 
   typename Tensor<rank_1 + rank_2 - 2,
@@ -2234,7 +2234,7 @@ template <int index_1,
           int dim,
           typename Number,
           typename OtherNumber>
-DEAL_II_CONSTEXPR inline
+constexpr inline
   typename Tensor<rank_1 + rank_2 - 4,
                   dim,
                   typename ProductType<Number, OtherNumber>::type>::tensor_type
@@ -2315,7 +2315,7 @@ DEAL_II_CONSTEXPR inline
  * @relatesalso Tensor
  */
 template <int rank, int dim, typename Number, typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   typename ProductType<Number, OtherNumber>::type
   scalar_product(const Tensor<rank, dim, Number> &     left,
                  const Tensor<rank, dim, OtherNumber> &right)
@@ -2352,7 +2352,7 @@ template <template <int, int, typename> class TensorT1,
           typename T1,
           typename T2,
           typename T3>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   typename ProductType<T1, typename ProductType<T2, T3>::type>::type
   contract3(const TensorT1<rank_1, dim, T1> &         left,
             const TensorT2<rank_1 + rank_2, dim, T2> &middle,
@@ -2381,7 +2381,7 @@ template <int rank_1,
           int dim,
           typename Number,
           typename OtherNumber>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   Tensor<rank_1 + rank_2, dim, typename ProductType<Number, OtherNumber>::type>
   outer_product(const Tensor<rank_1, dim, Number> &     src1,
                 const Tensor<rank_2, dim, OtherNumber> &src2)
@@ -2413,8 +2413,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<1, dim, Number>
-                                               cross_product_2d(const Tensor<1, dim, Number> &src)
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<1, dim, Number>
+                                       cross_product_2d(const Tensor<1, dim, Number> &src)
 {
   Assert(dim == 2, ExcInternalError());
 
@@ -2437,7 +2437,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<1, dim, Number>
  * @relatesalso Tensor
  */
 template <int dim, typename Number1, typename Number2>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
+constexpr inline DEAL_II_ALWAYS_INLINE
   Tensor<1, dim, typename ProductType<Number1, Number2>::type>
   cross_product_3d(const Tensor<1, dim, Number1> &src1,
                    const Tensor<1, dim, Number2> &src2)
@@ -2472,8 +2472,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
  * @relatesalso Tensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               determinant(const Tensor<2, dim, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       determinant(const Tensor<2, dim, Number> &t)
 {
   // Compute the determinant using the Laplace expansion of the
   // determinant. We expand along the last row.
@@ -2546,8 +2546,8 @@ constexpr DEAL_II_ALWAYS_INLINE Number
  * @relatesalso Tensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
-                                               trace(const Tensor<2, dim, Number> &d)
+constexpr inline DEAL_II_ALWAYS_INLINE Number
+                                       trace(const Tensor<2, dim, Number> &d)
 {
   Number t = d[0][0];
   for (unsigned int i = 1; i < dim; ++i)
@@ -2565,7 +2565,7 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Number
  * @relatesalso Tensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline Tensor<2, dim, Number>
+constexpr inline Tensor<2, dim, Number>
 invert(const Tensor<2, dim, Number> &)
 {
   Number return_tensor[dim][dim];
@@ -2582,8 +2582,8 @@ invert(const Tensor<2, dim, Number> &)
 #ifndef DOXYGEN
 
 template <typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 1, Number>
-                                               invert(const Tensor<2, 1, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, 1, Number>
+                                       invert(const Tensor<2, 1, Number> &t)
 {
   Tensor<2, 1, Number> return_tensor;
 
@@ -2594,8 +2594,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 1, Number>
 
 
 template <typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 2, Number>
-                                               invert(const Tensor<2, 2, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, 2, Number>
+                                       invert(const Tensor<2, 2, Number> &t)
 {
   Tensor<2, 2, Number> return_tensor;
 
@@ -2612,8 +2612,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 2, Number>
 
 
 template <typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 3, Number>
-                                               invert(const Tensor<2, 3, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, 3, Number>
+                                       invert(const Tensor<2, 3, Number> &t)
 {
   Tensor<2, 3, Number> return_tensor;
 
@@ -2652,8 +2652,8 @@ DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, 3, Number>
  * @relatesalso Tensor
  */
 template <int dim, typename Number>
-DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE Tensor<2, dim, Number>
-                                               transpose(const Tensor<2, dim, Number> &t)
+constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, dim, Number>
+                                       transpose(const Tensor<2, dim, Number> &t)
 {
   Tensor<2, dim, Number> tt;
   for (unsigned int i = 0; i < dim; ++i)
index 099929db7b277b9c7c2a3e3b00a6f84b7396e875..6944b7ee8d75c75123cfa1370d7f13a832c665ac 100644 (file)
@@ -269,7 +269,7 @@ namespace TensorAccessors
             typename T1,
             typename T2,
             typename T3>
-  DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE void
+  constexpr inline DEAL_II_ALWAYS_INLINE void
   contract(T1 &result, const T2 &left, const T3 &right)
   {
     static_assert(rank_1 >= no_contr,
@@ -623,7 +623,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3>
-      DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE static void
+      constexpr inline DEAL_II_ALWAYS_INLINE static void
       contract(T1 &result, const T2 &left, const T3 &right)
       {
         for (unsigned int i = 0; i < dim; ++i)
@@ -653,7 +653,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3>
-      DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE static void
+      constexpr inline DEAL_II_ALWAYS_INLINE static void
       contract(T1 &result, const T2 &left, const T3 &right)
       {
         for (unsigned int i = 0; i < dim; ++i)
@@ -683,7 +683,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3>
-      DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE static void
+      constexpr inline DEAL_II_ALWAYS_INLINE static void
       contract(T1 &result, const T2 &left, const T3 &right)
       {
         result = Contract2<no_contr, dim>::template contract2<T1>(left, right);
@@ -699,7 +699,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3>
-      DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE static T1
+      constexpr inline DEAL_II_ALWAYS_INLINE static T1
       contract2(const T2 &left, const T3 &right)
       {
         // Some auto-differentiable numbers need explicit
@@ -758,7 +758,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3, typename T4>
-      DEAL_II_CONSTEXPR static inline T1
+      constexpr static inline T1
       contract3(const T2 &left, const T3 &middle, const T4 &right)
       {
         // Some auto-differentiable numbers need explicit
@@ -788,7 +788,7 @@ namespace TensorAccessors
     {
     public:
       template <typename T1, typename T2, typename T3, typename T4>
-      DEAL_II_CONSTEXPR static inline T1
+      constexpr static inline T1
       contract3(const T2 &left, const T3 &middle, const T4 &right)
       {
         // Some auto-differentiable numbers need explicit

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.