]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Be more explicit about the Copied argument to WorkStream::run(). 8928/head
authorWolfgang Bangerth <bangerth@colostate.edu>
Fri, 18 Oct 2019 16:51:11 +0000 (10:51 -0600)
committerWolfgang Bangerth <bangerth@colostate.edu>
Fri, 18 Oct 2019 18:25:14 +0000 (12:25 -0600)
include/deal.II/base/work_stream.h

index c2664c39e2a64710d5bb633fb03c444025911fb5..31e06c848b32e61aa365fb054c533a839e063259 100644 (file)
@@ -929,8 +929,16 @@ namespace WorkStream
    * are generated.
    *
    * @note In case the copier does not do anything, pass
-   * <code>std::function<void(const CopyData&)>()</code> as @p copier to make sure
-   * a more efficient algorithm is used internally.
+   * `std::function<void(const CopyData &)>()` as @p copier to make sure
+   * a more efficient algorithm is used internally. It is important, however,
+   * to recognize that the empty function object created above is *not*
+   * the same as a lambda function with an empty body,
+   * `[](const CopyData &) {}` -- from the perspective of this function,
+   * there is no way to recognize whether a lambda function provided as
+   * a copier does something or does not do something in its body,
+   * and so it needs to be copied. On the other hand, a default-constructed
+   * `std::function` object *can* be recognized, and is then used to select
+   * a more efficient algorithm.
    */
   template <typename Worker,
             typename Copier,
@@ -982,8 +990,16 @@ namespace WorkStream
    * are generated.
    *
    * @note In case the copier does not do anything, pass
-   * <code>std::function<void(const CopyData&)>()</code> as @p copier to make sure
-   * a more efficient algorithm is used internally.
+   * `std::function<void(const CopyData &)>()` as @p copier to make sure
+   * a more efficient algorithm is used internally. It is important, however,
+   * to recognize that the empty function object created above is *not*
+   * the same as a lambda function with an empty body,
+   * `[](const CopyData &) {}` -- from the perspective of this function,
+   * there is no way to recognize whether a lambda function provided as
+   * a copier does something or does not do something in its body,
+   * and so it needs to be copied. On the other hand, a default-constructed
+   * `std::function` object *can* be recognized, and is then used to select
+   * a more efficient algorithm.
    */
   template <typename Worker,
             typename Copier,
@@ -1276,8 +1292,16 @@ namespace WorkStream
    * are generated.
    *
    * @note In case the copier does not do anything, pass
-   * <code>std::function<void(const CopyData&)>()</code> as @p copier to make sure
-   * a more efficient algorithm is used internally.
+   * `std::function<void(const CopyData &)>()` as @p copier to make sure
+   * a more efficient algorithm is used internally. It is important, however,
+   * to recognize that the empty function object created above is *not*
+   * the same as a lambda function with an empty body,
+   * `[](const CopyData &) {}` -- from the perspective of this function,
+   * there is no way to recognize whether a lambda function provided as
+   * a copier does something or does not do something in its body,
+   * and so it needs to be copied. On the other hand, a default-constructed
+   * `std::function` object *can* be recognized, and is then used to select
+   * a more efficient algorithm.
    */
   template <typename MainClass,
             typename Iterator,

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.