]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Declare a number of static consts as constexpr 13439/head
authorMatthias Maier <tamiko@43-1.org>
Wed, 23 Feb 2022 13:12:41 +0000 (07:12 -0600)
committerMatthias Maier <tamiko@43-1.org>
Wed, 23 Feb 2022 13:12:41 +0000 (07:12 -0600)
By changing the underlying type from `static const` to
`static constexpr` it is possible to use these dimension constants also
in template expressions.

25 files changed:
include/deal.II/base/function.h
include/deal.II/base/incremental_function.h
include/deal.II/base/polynomial_space.h
include/deal.II/base/polynomials_barycentric.h
include/deal.II/base/polynomials_p.h
include/deal.II/base/polynomials_pyramid.h
include/deal.II/base/polynomials_rannacher_turek.h
include/deal.II/base/polynomials_wedge.h
include/deal.II/base/symmetric_tensor.h
include/deal.II/base/tensor_product_polynomials.h
include/deal.II/base/tensor_product_polynomials_bubbles.h
include/deal.II/base/tensor_product_polynomials_const.h
include/deal.II/differentiation/ad/ad_helpers.h
include/deal.II/dofs/dof_accessor.h
include/deal.II/dofs/dof_handler.h
include/deal.II/fe/fe.h
include/deal.II/fe/fe_base.h
include/deal.II/fe/fe_poly.h
include/deal.II/fe/fe_values.h
include/deal.II/grid/persistent_tria.h
include/deal.II/grid/tria.h
include/deal.II/grid/tria_accessor.h
include/deal.II/hp/fe_values.h
include/deal.II/matrix_free/matrix_free.h
include/deal.II/meshworker/integration_info.h

index d252796d41ce64c36baca93d0eaf35d7ce5643b8..932ff5afcdf4a226800b86a00137afd20401cd96 100644 (file)
@@ -156,7 +156,7 @@ public:
    * Export the value of the template parameter as a static member constant.
    * Sometimes useful for some expression template programming.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Number of vector components.
index 641cba7109a4f5da9ae6f12052ddacba2bb06de7..c3286ce3c8ae2497d935a0153f36a692edd525d6 100644 (file)
@@ -56,7 +56,7 @@ namespace Functions
      * Export the value of the template parameter as a static member constant.
      * This is sometimes useful in the context of template programming.
      */
-    static const unsigned int dimension = dim;
+    static constexpr unsigned int dimension = dim;
 
     /**
      * The scalar-valued real type used for representing time.
index dc1ac3dc818294c0caa4dc1e5ec4a2a22a8a0888..4193169fb699d49a3a3da0109584d6a811ec08bf 100644 (file)
@@ -102,7 +102,7 @@ public:
    * Access to the dimension of this object, for checking and automatic
    * setting of dimension in other classes.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor. <tt>pols</tt> is a vector of pointers to one-dimensional
index 2668640096466dca5a8c74be31119091e2f59c79..eb5fd8564f47263a055f58408d1c9b44af65e937 100644 (file)
@@ -243,7 +243,7 @@ public:
   /**
    * Make the dimension available to the outside.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Get the standard Lagrange basis for a specified degree.
index cc7ef884c3a927a196b7a549edf53c91feba45a5..3e31f277b0e14d2c67302f57cb2441dc13967c32 100644 (file)
@@ -51,7 +51,7 @@ public:
    * Access to the dimension of this object, for checking and automatic
    * setting of dimension in other classes.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor. Creates all basis functions of $P_p$. @arg p: the degree of
index 0c0ee41a5c97fb08418c0646139b464364799153..7475cd07ebeb430a47a761ffc4cf2ccc334e96f8 100644 (file)
@@ -34,7 +34,7 @@ public:
   /**
    * Make the dimension available to the outside.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /*
    * Constructor taking the polynomial @p degree as input.
index ee5cfad18ad588e548a0cdbc845dabc86aaf8abd..bbc8b16d7ee3f2ee68fb67483eca657b97becd96 100644 (file)
@@ -45,7 +45,7 @@ public:
   /**
    * Dimension we are working in.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor, checking that the basis is implemented in this dimension.
index 2cd3a27962be48c43b4a92b86a4c7ff3d5f391f1..c29410fc0a67114450324c629bb3819fd4790188 100644 (file)
@@ -40,7 +40,7 @@ public:
   /**
    * Make the dimension available to the outside.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /*
    * Constructor taking the polynomial @p degree as input.
index 0f0d659d384a79279b4c6be09912d5d7920a38fd..9133cc923046bffa1678a66df64d75aa22fdd845 100644 (file)
@@ -680,7 +680,7 @@ public:
    * of an inlined function; the compiler may therefore produce more efficient
    * code and you may use this value to declare other data types.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Publish the rank of this tensor to the outside world.
index a8666cc80f4f359591d8cd0a8b8a63075cd275db..bfa773456116a278c493a3fe78068d37185d9a54 100644 (file)
@@ -80,7 +80,7 @@ public:
    * Access to the dimension of this object, for checking and automatic
    * setting of dimension in other classes.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor. <tt>pols</tt> is a vector of objects that should be derived
index d74f012cf0721c27f8b49fee091ea8638a9c0aaa..bd472af5c03fec4fce911ac0d4a4ed95c0f810a7 100644 (file)
@@ -57,7 +57,7 @@ public:
    * Access to the dimension of this object, for checking and automatic
    * setting of dimension in other classes.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor. <tt>pols</tt> is a vector of objects that should be derived
index 62bccbf7061f2fab8eceb85c589fff74c0d90845..62d1655e1ddfcc7677646ee0abc6223cbfd81fe6 100644 (file)
@@ -50,7 +50,7 @@ public:
    * Access to the dimension of this object, for checking and automatic
    * setting of dimension in other classes.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Constructor. <tt>pols</tt> is a vector of objects that should be derived
index f10042a429b4eb784d5f54f97d14d4155a8f7445..2cc9249453689433b590cc98e057fc6a3177384c 100644 (file)
@@ -2646,7 +2646,7 @@ namespace Differentiation
        * Type definition for the dimension of the associated input and output
        * tensor types.
        */
-      static const unsigned int dimension = dim;
+      static constexpr unsigned int dimension = dim;
 
       /**
        * Type definition for the floating point number type that is used in,
index 0ccf0c836987c0fcec18c59a8c6d836eb81b4689..39ee53ef313e868b4a8e05dfdb4df22a4ef953e5 100644 (file)
@@ -216,13 +216,13 @@ public:
    * A static variable that allows users of this class to discover the value
    * of the second template argument.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * A static variable that allows users of this class to discover the value
    * of the third template argument.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Declare an alias to the base class to make accessing some of the
@@ -770,13 +770,13 @@ public:
    * A static variable that allows users of this class to discover the value
    * of the second template argument.
    */
-  static const unsigned int dimension = 1;
+  static constexpr unsigned int dimension = 1;
 
   /**
    * A static variable that allows users of this class to discover the value
    * of the third template argument.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Declare an alias to the base class to make accessing some of the
index 17524137829dec55627202fdaa14b1ff8d9d2cd9..25c6c46c36f92732cb6f54d3cb0c5676ae39e46d 100644 (file)
@@ -506,12 +506,12 @@ public:
   /**
    * Make the dimension available in function templates.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Make the space dimension available in function templates.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * The default index of the finite element to be used on a given cell.
index 624b7a244fc07df4ae99b344ee7e6b5dde90668f..388d7c0146568a6b1f2fc437744926010437b4a4 100644 (file)
@@ -656,7 +656,7 @@ public:
   /**
    * The dimension of the image space, corresponding to Triangulation.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * A base class for internal data that derived finite element classes may
index 5dd296ec5de52745ae872f23411ba01c046d71c1..f817e16345401f05ed1433a0d44f4c01088e90b4 100644 (file)
@@ -283,7 +283,7 @@ public:
    * The dimension of the finite element, which is the template parameter
    * <tt>dim</tt>
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
 private:
   /**
index b350e6875446cf0ca564f4427e24dd2f4fc728eb..9564366d4d6fdf901fe6fa81ee3a9313e75baae8 100644 (file)
@@ -42,7 +42,7 @@ DEAL_II_NAMESPACE_OPEN
  * functions can be used as template parameter @p PolynomialType.
  *
  * @code
- *  static const unsigned int dimension;
+ *  static constexpr unsigned int dimension;
  *
  *  void evaluate (const Point<dim>            &unit_point,
  *                 std::vector<double>         &values,
index 191333295ad043fad7100c34b0a64111d678a65f..bcef903b8d556dee1e583ad65c122585b2332403 100644 (file)
@@ -2415,12 +2415,12 @@ public:
   /**
    * Dimension in which this object operates.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Dimension of the space in which this object operates.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Number of quadrature points of the current object. Its value is
@@ -4048,7 +4048,7 @@ public:
    * Dimension of the object over which we integrate. For the present class,
    * this is equal to <code>dim</code>.
    */
-  static const unsigned int integral_dimension = dim;
+  static constexpr unsigned int integral_dimension = dim;
 
   /**
    * Constructor. Gets cell independent data from mapping and finite element
@@ -4187,7 +4187,7 @@ public:
    * Dimension of the object over which we integrate. For the present class,
    * this is equal to <code>dim-1</code>.
    */
-  static const unsigned int integral_dimension = dim - 1;
+  static constexpr unsigned int integral_dimension = dim - 1;
 
   /**
    * Constructor. Call the constructor of the base class and set up the arrays
@@ -4307,15 +4307,15 @@ public:
    * Dimension in which this object operates.
    */
 
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Dimension of the object over which we integrate. For the present class,
    * this is equal to <code>dim-1</code>.
    */
-  static const unsigned int integral_dimension = dim - 1;
+  static constexpr unsigned int integral_dimension = dim - 1;
 
   /**
    * Constructor. Gets cell independent data from mapping and finite element
@@ -4472,18 +4472,18 @@ public:
   /**
    * Dimension in which this object operates.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Dimension of the space in which this object operates.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Dimension of the object over which we integrate. For the present class,
    * this is equal to <code>dim-1</code>.
    */
-  static const unsigned int integral_dimension = dim - 1;
+  static constexpr unsigned int integral_dimension = dim - 1;
 
   /**
    * Constructor. Gets cell independent data from mapping and finite element
index f5e45cc5859c3bdca4edae79098db87d9062db94..05e8448157aa23a4fbf1030687d8695447a83934 100644 (file)
@@ -111,8 +111,8 @@ public:
   /**
    * Make the dimension available in function templates.
    */
-  static const unsigned int dimension      = dim;
-  static const unsigned int spacedimension = spacedim;
+  static constexpr unsigned int dimension      = dim;
+  static const unsigned int     spacedimension = spacedim;
 
   /**
    * Build up the triangulation from the coarse grid in future. Copy smoothing
index 8814bc8159e8195b2ca3ef606a3f25535ecdd1e1..9dc1d8c3c9fdf5dee73bb6b65311b713628cde27 100644 (file)
@@ -1539,12 +1539,12 @@ public:
   /**
    * Make the dimension available in function templates.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Make the space-dimension available in function templates.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Create an empty triangulation. Do not create any cells.
index 7134de41d386b2c995cea0bc740b69e6fc681e08..3f33902091910fb387a2bb8d7d8cca3dfd9f54b4 100644 (file)
@@ -306,14 +306,14 @@ public:
    * For example, if this accessor represents a quad that is part of a two-
    * dimensional surface in four-dimensional space, then this value is four.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Dimensionality of the object that the thing represented by this accessor
    * is part of. For example, if this accessor represents a line that is part
    * of a hexahedron, then this value will be three.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Dimensionality of the current object represented by this accessor. For
@@ -1881,14 +1881,14 @@ public:
    * For example, if this accessor represents a quad that is part of a two-
    * dimensional surface in four-dimensional space, then this value is four.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Dimensionality of the object that the thing represented by this accessor
    * is part of. For example, if this accessor represents a line that is part
    * of a hexahedron, then this value will be three.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Dimensionality of the current object represented by this accessor. For
@@ -2299,14 +2299,14 @@ public:
    * For example, if this accessor represents a quad that is part of a two-
    * dimensional surface in four-dimensional space, then this value is four.
    */
-  static const unsigned int space_dimension = spacedim;
+  static constexpr unsigned int space_dimension = spacedim;
 
   /**
    * Dimensionality of the object that the thing represented by this accessor
    * is part of. For example, if this accessor represents a line that is part
    * of a hexahedron, then this value will be three.
    */
-  static const unsigned int dimension = 1;
+  static constexpr unsigned int dimension = 1;
 
   /**
    * Dimensionality of the current object represented by this accessor. For
index b6f4b145d0536d863041b5d47ab7603545ec6cf6..713af330387f27878e7f06b4236842a76526614c 100644 (file)
@@ -316,9 +316,9 @@ namespace hp
     : public hp::FEValuesBase<dim, dim, dealii::FEValues<dim, spacedim>>
   {
   public:
-    static const unsigned int dimension = dim;
+    static constexpr unsigned int dimension = dim;
 
-    static const unsigned int space_dimension = spacedim;
+    static constexpr unsigned int space_dimension = spacedim;
 
     /**
      * Constructor. Initialize this object with the given parameters.
index 77d812cae8c6fd60050945ce58b25b5aee60f37c..5c456917b885dc12e1c5bc4c7e60231ba8ed45bf 100644 (file)
@@ -128,7 +128,7 @@ public:
   /**
    * The dimension set by the template argument `dim`.
    */
-  static const unsigned int dimension = dim;
+  static constexpr unsigned int dimension = dim;
 
   /**
    * Collects the options for initialization of the MatrixFree class. The
index b8260d13d385c563e939db9df0604a82c28bbe82..6bd1be703a3cf365e3ec2fcac45ef6cd7785d17b 100644 (file)
@@ -81,8 +81,8 @@ namespace MeshWorker
     std::vector<std::shared_ptr<FEValuesBase<dim, spacedim>>> fevalv;
 
   public:
-    static const unsigned int dimension       = dim;
-    static const unsigned int space_dimension = spacedim;
+    static constexpr unsigned int dimension       = dim;
+    static constexpr unsigned int space_dimension = spacedim;
 
     /**
      * Constructor.

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.