]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add a local typedef IndexSet::value_type.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Sun, 22 Feb 2015 22:10:21 +0000 (16:10 -0600)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Sun, 22 Feb 2015 22:15:54 +0000 (16:15 -0600)
doc/news/changes.h
include/deal.II/base/index_set.h

index 77ca21aa83cfd8c203cc94958128e10587124c2a..403c8ef4fd78d42286ace0b41d025af762ee5d09 100644 (file)
@@ -350,6 +350,11 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li> New: IndexSet now has a local typedef IndexSet::value_type/
+  <br>
+  (Wolfgang Bangerth, 2015/02/22)
+  </li>
+
   <li> Fixed: MappingQEulerian would previously not move interior points
   in 1D for higher order mappings. This has been fixed by removing a few
   specializations of MappingQ for 1D that are no longer necessary.
index 96aaa9bf7f84cd98739e307f849f7465ee442c7b..89ccbeffba9bc9d60c248583d5e1c99a88a7fc51 100644 (file)
@@ -59,6 +59,27 @@ DEAL_II_NAMESPACE_OPEN
 class IndexSet
 {
 public:
+  /**
+   * One can see an IndexSet as a container of size size(), where the
+   * elements of the containers are bool values that are either false
+   * or true, depending on whether a particular index is an element of
+   * the IndexSet or not. In other words, an IndexSet is a bit like a
+   * vector in which the elements we store are booleans. In this view,
+   * the correct local typedef indicating the type of the elements of
+   * the vector would then be @p bool.
+   *
+   * On the other hand, @p bool has the disadvantage that it is not a
+   * numerical type that, for example, allows multiplication with a @p
+   * double. In other words, one can not easily use a vector of
+   * booleans in a place where other vectors are
+   * allowed. Consequently, we declare the type of the elements of
+   * such a vector as a signed integer. This uses the fact that in the
+   * C++ language, booleans are implicitly convertible to integers. In
+   * other words, declaring the type of the elements of the vector as
+   * a signed integer is only a small lie, but it is a useful one.
+   */
+  typedef signed int value_type;
+
   /**
    * Default 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.