{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.5Cq3nWCs/b1/dune-typetree_2.10.0-1_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.5Cq3nWCs/b2/dune-typetree_2.10.0-1_i386.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n 280a4948b81ad2bca2da45652b369439 41680 libdevel optional libdune-typetree-dev_2.10.0-1_i386.deb\n- ad002fc80a7b8107846da20bd79b5eec 991664 doc optional libdune-typetree-doc_2.10.0-1_all.deb\n+ 80c68df987f262a8cf531537681fb421 991388 doc optional libdune-typetree-doc_2.10.0-1_all.deb\n"}, {"source1": "libdune-typetree-doc_2.10.0-1_all.deb", "source2": "libdune-typetree-doc_2.10.0-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-11-14 20:30:42.000000 debian-binary\n--rw-r--r-- 0 0 0 9644 2024-11-14 20:30:42.000000 control.tar.xz\n--rw-r--r-- 0 0 0 981828 2024-11-14 20:30:42.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 9648 2024-11-14 20:30:42.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 981548 2024-11-14 20:30:42.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -5,68 +5,68 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/\n -rw-r--r-- 0 root (0) root (0) 885 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 2679 2024-09-05 06:40:04.000000 ./usr/share/doc/libdune-typetree-doc/changelog.gz\n -rw-r--r-- 0 root (0) root (0) 3031 2023-01-12 15:07:35.000000 ./usr/share/doc/libdune-typetree-doc/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/\n -rw-r--r-- 0 root (0) root (0) 3048 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00002.html\n -rw-r--r-- 0 root (0) root (0) 3046 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00005.html\n--rw-r--r-- 0 root (0) root (0) 9728 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00008.html\n--rw-r--r-- 0 root (0) root (0) 67498 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00008_source.html\n--rw-r--r-- 0 root (0) root (0) 17215 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00011.html\n--rw-r--r-- 0 root (0) root (0) 73690 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00011_source.html\n--rw-r--r-- 0 root (0) root (0) 11111 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00014.html\n--rw-r--r-- 0 root (0) root (0) 56098 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00014_source.html\n--rw-r--r-- 0 root (0) root (0) 6911 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00017.html\n--rw-r--r-- 0 root (0) root (0) 15988 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00017_source.html\n--rw-r--r-- 0 root (0) root (0) 6860 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00020.html\n--rw-r--r-- 0 root (0) root (0) 87521 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00020_source.html\n--rw-r--r-- 0 root (0) root (0) 5150 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00023.html\n--rw-r--r-- 0 root (0) root (0) 32708 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00023_source.html\n--rw-r--r-- 0 root (0) root (0) 5910 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00026.html\n--rw-r--r-- 0 root (0) root (0) 48639 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00026_source.html\n--rw-r--r-- 0 root (0) root (0) 8712 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00029.html\n--rw-r--r-- 0 root (0) root (0) 19409 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00029_source.html\n--rw-r--r-- 0 root (0) root (0) 15110 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00032.html\n--rw-r--r-- 0 root (0) root (0) 97993 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00032_source.html\n--rw-r--r-- 0 root (0) root (0) 7399 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00035.html\n--rw-r--r-- 0 root (0) root (0) 41519 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00035_source.html\n--rw-r--r-- 0 root (0) root (0) 6195 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00038.html\n--rw-r--r-- 0 root (0) root (0) 68730 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00038_source.html\n--rw-r--r-- 0 root (0) root (0) 37497 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00041.html\n--rw-r--r-- 0 root (0) root (0) 127500 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00041_source.html\n--rw-r--r-- 0 root (0) root (0) 15418 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00044.html\n--rw-r--r-- 0 root (0) root (0) 53520 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00044_source.html\n--rw-r--r-- 0 root (0) root (0) 5534 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00047.html\n--rw-r--r-- 0 root (0) root (0) 38082 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00047_source.html\n--rw-r--r-- 0 root (0) root (0) 3695 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00050.html\n--rw-r--r-- 0 root (0) root (0) 5943 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00050_source.html\n--rw-r--r-- 0 root (0) root (0) 10552 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00053.html\n--rw-r--r-- 0 root (0) root (0) 47000 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00053_source.html\n--rw-r--r-- 0 root (0) root (0) 6234 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00056.html\n--rw-r--r-- 0 root (0) root (0) 9310 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00056_source.html\n--rw-r--r-- 0 root (0) root (0) 4850 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00059.html\n--rw-r--r-- 0 root (0) root (0) 9300 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00059_source.html\n--rw-r--r-- 0 root (0) root (0) 8737 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00062.html\n--rw-r--r-- 0 root (0) root (0) 57453 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00062_source.html\n--rw-r--r-- 0 root (0) root (0) 7065 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00065.html\n--rw-r--r-- 0 root (0) root (0) 26864 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00065_source.html\n--rw-r--r-- 0 root (0) root (0) 5126 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00068.html\n--rw-r--r-- 0 root (0) root (0) 13808 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00068_source.html\n--rw-r--r-- 0 root (0) root (0) 6050 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00071.html\n--rw-r--r-- 0 root (0) root (0) 48822 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00071_source.html\n--rw-r--r-- 0 root (0) root (0) 11231 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00074.html\n--rw-r--r-- 0 root (0) root (0) 43487 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00074_source.html\n--rw-r--r-- 0 root (0) root (0) 5604 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00077.html\n--rw-r--r-- 0 root (0) root (0) 39473 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00077_source.html\n--rw-r--r-- 0 root (0) root (0) 13745 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00080.html\n--rw-r--r-- 0 root (0) root (0) 52788 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00080_source.html\n--rw-r--r-- 0 root (0) root (0) 7479 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00083.html\n--rw-r--r-- 0 root (0) root (0) 17526 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00083_source.html\n--rw-r--r-- 0 root (0) root (0) 5212 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00086.html\n--rw-r--r-- 0 root (0) root (0) 7085 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00086_source.html\n+-rw-r--r-- 0 root (0) root (0) 10552 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00008.html\n+-rw-r--r-- 0 root (0) root (0) 47000 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00008_source.html\n+-rw-r--r-- 0 root (0) root (0) 6195 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00011.html\n+-rw-r--r-- 0 root (0) root (0) 68730 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00011_source.html\n+-rw-r--r-- 0 root (0) root (0) 15418 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00014.html\n+-rw-r--r-- 0 root (0) root (0) 53520 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00014_source.html\n+-rw-r--r-- 0 root (0) root (0) 11111 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00017.html\n+-rw-r--r-- 0 root (0) root (0) 56098 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00017_source.html\n+-rw-r--r-- 0 root (0) root (0) 3695 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00020.html\n+-rw-r--r-- 0 root (0) root (0) 5943 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00020_source.html\n+-rw-r--r-- 0 root (0) root (0) 15110 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00023.html\n+-rw-r--r-- 0 root (0) root (0) 97993 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00023_source.html\n+-rw-r--r-- 0 root (0) root (0) 5604 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00026.html\n+-rw-r--r-- 0 root (0) root (0) 39473 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00026_source.html\n+-rw-r--r-- 0 root (0) root (0) 5150 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00029.html\n+-rw-r--r-- 0 root (0) root (0) 32708 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00029_source.html\n+-rw-r--r-- 0 root (0) root (0) 4850 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00032.html\n+-rw-r--r-- 0 root (0) root (0) 9300 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00032_source.html\n+-rw-r--r-- 0 root (0) root (0) 5534 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00035.html\n+-rw-r--r-- 0 root (0) root (0) 38082 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00035_source.html\n+-rw-r--r-- 0 root (0) root (0) 7065 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00038.html\n+-rw-r--r-- 0 root (0) root (0) 26864 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00038_source.html\n+-rw-r--r-- 0 root (0) root (0) 5212 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00041.html\n+-rw-r--r-- 0 root (0) root (0) 7085 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00041_source.html\n+-rw-r--r-- 0 root (0) root (0) 5910 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00044.html\n+-rw-r--r-- 0 root (0) root (0) 48639 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00044_source.html\n+-rw-r--r-- 0 root (0) root (0) 11231 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00047.html\n+-rw-r--r-- 0 root (0) root (0) 43487 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00047_source.html\n+-rw-r--r-- 0 root (0) root (0) 6234 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00050.html\n+-rw-r--r-- 0 root (0) root (0) 9310 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00050_source.html\n+-rw-r--r-- 0 root (0) root (0) 8712 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00053.html\n+-rw-r--r-- 0 root (0) root (0) 19409 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00053_source.html\n+-rw-r--r-- 0 root (0) root (0) 7479 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00056.html\n+-rw-r--r-- 0 root (0) root (0) 17526 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00056_source.html\n+-rw-r--r-- 0 root (0) root (0) 13745 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00059.html\n+-rw-r--r-- 0 root (0) root (0) 52788 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00059_source.html\n+-rw-r--r-- 0 root (0) root (0) 37497 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00062.html\n+-rw-r--r-- 0 root (0) root (0) 127500 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00062_source.html\n+-rw-r--r-- 0 root (0) root (0) 7399 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00065.html\n+-rw-r--r-- 0 root (0) root (0) 41519 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00065_source.html\n+-rw-r--r-- 0 root (0) root (0) 8737 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00068.html\n+-rw-r--r-- 0 root (0) root (0) 57453 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00068_source.html\n+-rw-r--r-- 0 root (0) root (0) 5126 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00071.html\n+-rw-r--r-- 0 root (0) root (0) 13808 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00071_source.html\n+-rw-r--r-- 0 root (0) root (0) 17215 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00074.html\n+-rw-r--r-- 0 root (0) root (0) 73690 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00074_source.html\n+-rw-r--r-- 0 root (0) root (0) 6860 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00077.html\n+-rw-r--r-- 0 root (0) root (0) 87521 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00077_source.html\n+-rw-r--r-- 0 root (0) root (0) 9728 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00080.html\n+-rw-r--r-- 0 root (0) root (0) 67498 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00080_source.html\n+-rw-r--r-- 0 root (0) root (0) 6050 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00083.html\n+-rw-r--r-- 0 root (0) root (0) 48822 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00083_source.html\n+-rw-r--r-- 0 root (0) root (0) 6911 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00086.html\n+-rw-r--r-- 0 root (0) root (0) 15988 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00086_source.html\n -rw-r--r-- 0 root (0) root (0) 16500 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00089.html\n -rw-r--r-- 0 root (0) root (0) 11643 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00089.png\n -rw-r--r-- 0 root (0) root (0) 33697 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00090.html\n -rw-r--r-- 0 root (0) root (0) 4364 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00090.png\n -rw-r--r-- 0 root (0) root (0) 21122 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00091.html\n -rw-r--r-- 0 root (0) root (0) 3530 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00091.png\n -rw-r--r-- 0 root (0) root (0) 25232 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/a00092.html\n@@ -372,15 +372,15 @@\n -rw-r--r-- 0 root (0) root (0) 3903 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_04f2ecc425faf0d475a3caf484e551f3.html\n -rw-r--r-- 0 root (0) root (0) 2277 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_04f2ecc425faf0d475a3caf484e551f3_dep.png\n -rw-r--r-- 0 root (0) root (0) 3676 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_5e69be5995c9f5d42bf491ae6f29600e.html\n -rw-r--r-- 0 root (0) root (0) 13067 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_5e74c06688912037f4b476b8dc05fab9.html\n -rw-r--r-- 0 root (0) root (0) 2105 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_5e74c06688912037f4b476b8dc05fab9_dep.png\n -rw-r--r-- 0 root (0) root (0) 3672 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dir_e68e8157741866f444e17edd764ebbae.html\n -rw-r--r-- 0 root (0) root (0) 45631 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/doxygen.css\n--rw-r--r-- 0 root (0) root (0) 23506 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dune-typetree.tag.gz\n+-rw-r--r-- 0 root (0) root (0) 23508 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dune-typetree.tag.gz\n -rw-r--r-- 0 root (0) root (0) 7704 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/dynsections.js\n -rw-r--r-- 0 root (0) root (0) 12259 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/files.html\n -rw-r--r-- 0 root (0) root (0) 3441 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/functions.html\n -rw-r--r-- 0 root (0) root (0) 3960 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/functions_b.html\n -rw-r--r-- 0 root (0) root (0) 6674 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/functions_c.html\n -rw-r--r-- 0 root (0) root (0) 6085 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/functions_d.html\n -rw-r--r-- 0 root (0) root (0) 3515 2024-11-14 20:30:42.000000 ./usr/share/doc/libdune-typetree-doc/doxygen/functions_e.html\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00008.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00008.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: proxynode.hh File Reference</title>\n+<title>dune-typetree: childextraction.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,61 +70,66 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">proxynode.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#typedef-members\">Typedefs</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">childextraction.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include <type_traits></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <utility></code><br />\n+<code>#include <dune/common/concept.hh></code><br />\n+<code>#include <dune/common/documentation.hh></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n <code>#include <dune/common/shared_ptr.hh></code><br />\n-<code>#include <dune/common/indices.hh></code><br />\n-<code>#include <dune/common/std/type_traits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n </div>\n <p><a href=\"a00008_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01300.html\">Dune::TypeTree::StaticChildAccessors< ProxiedNode ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin class providing methods for child access with compile-time parameter. <a href=\"a01300.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01308.html\">Dune::TypeTree::StaticChildAccessors< ProxiedNode >::Child< k ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01308.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01312.html\">Dune::TypeTree::DynamicChildAccessors< ProxiedNode ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin class providing methods for child access with run-time parameter. <a href=\"a01312.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01320.html\">Dune::TypeTree::ProxyNodeBase< Node, LeafNodeTag ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01240.html\" title=\"Base class for leaf nodes in a dune-typetree.\">LeafNode</a>. <a href=\"a01320.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01324.html\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01076.html\" title=\"Base class for composite nodes based on variadic templates.\">CompositeNode</a>. <a href=\"a01324.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01328.html\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01288.html\" title=\"Collect k instances of type T within a dune-typetree.\">PowerNode</a>. <a href=\"a01328.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01332.html\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01084.html\" title=\"Collect multiple instances of type T within a dune-typetree.\">DynamicPowerNode</a>. <a href=\"a01332.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01296.html\">Dune::TypeTree::ProxyNode< Node ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for nodes acting as a proxy for an existing node. <a href=\"a01296.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:ga8136d392450f4308b90a04a143e20feb\" id=\"r_ga8136d392450f4308b90a04a143e20feb\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , std::size_t... indices> </td></tr>\n+<tr class=\"memitem:ga8136d392450f4308b90a04a143e20feb\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a> = typename impl::_Child< Node, indices... >::type</td></tr>\n+<tr class=\"memdesc:ga8136d392450f4308b90a04a143e20feb\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template alias for the type of a child node given by a list of child indices. <br /></td></tr>\n+<tr class=\"separator:ga8136d392450f4308b90a04a143e20feb\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gac7126c2c9df855877ce3e71c77738398\" id=\"r_gac7126c2c9df855877ce3e71c77738398\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename TreePath > </td></tr>\n+<tr class=\"memitem:gac7126c2c9df855877ce3e71c77738398\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">Dune::TypeTree::ChildForTreePath</a> = typename impl::_ChildForTreePath< Node, TreePath >::type</td></tr>\n+<tr class=\"memdesc:gac7126c2c9df855877ce3e71c77738398\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template alias for the type of a child node given by a TreePath or a <a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a> type. <br /></td></tr>\n+<tr class=\"separator:gac7126c2c9df855877ce3e71c77738398\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga5832a3bb33ab6b058aee3b201699584a\" id=\"r_ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n+<tr class=\"memitem:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index</a> = typename impl::_is_flat_index< std::decay_t< T > >::type</td></tr>\n+<tr class=\"memdesc:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Type trait that determines whether T is a flat index in the context of child extraction. <br /></td></tr>\n+<tr class=\"separator:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:gab8f2fef526363564e7bbe91daad49b9b\" id=\"r_gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n+<tr class=\"memitem:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a> (Node &&node, Indices... indices)</td></tr>\n+<tr class=\"memdesc:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Extracts the child of a node given by a sequence of compile-time and run-time indices. <br /></td></tr>\n+<tr class=\"separator:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga6d60a84ddd0be65b0cae4a5e6032a52a\" id=\"r_ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n+<tr class=\"memitem:ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">Dune::TypeTree::childStorage</a> (Node &&node, Indices... indices)</td></tr>\n+<tr class=\"separator:ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gae4133f4dba113143455fcab49d8a103e\" id=\"r_gae4133f4dba113143455fcab49d8a103e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n+<tr class=\"memitem:gae4133f4dba113143455fcab49d8a103e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gae4133f4dba113143455fcab49d8a103e\">Dune::TypeTree::child</a> (Node &&node, <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Indices... > <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</td></tr>\n+<tr class=\"memdesc:gae4133f4dba113143455fcab49d8a103e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Extracts the child of a node given by a <a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a> object. <br /></td></tr>\n+<tr class=\"separator:gae4133f4dba113143455fcab49d8a103e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,49 +1,58 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-proxynode.hh File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+childextraction.hh File Reference\n #include <type_traits>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <utility>\n+#include <dune/common/concept.hh>\n+#include <dune/common/documentation.hh>\n+#include <dune/common/typetraits.hh>\n #include <dune/common/shared_ptr.hh>\n-#include <dune/common/indices.hh>\n-#include <dune/common/std/type_traits.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0 Mixin class providing methods for child access with compile-time\n- parameter. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n-\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0 Mixin class providing methods for child access with run-time\n- parameter. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n-\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n-\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n-\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n-\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n-\u00a0 Base class for nodes acting as a proxy for an existing node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template<typename Node , std::size_t... indices>\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd = typename impl::_Child< Node, indices... >::type\n+\u00a0 Template alias for the type of a child node given by a list of child\n+ indices.\n+\u00a0\n+template<typename Node , typename TreePath >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = typename impl::_ChildForTreePath<\n+ Node, TreePath >::type\n+\u00a0 Template alias for the type of a child node given by a TreePath or a\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh type.\n+\u00a0\n+template<typename T >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx = typename impl::_is_flat_index< std::\n+ decay_t< T > >::type\n+\u00a0 Type trait that determines whether T is a flat index in the context of\n+ child extraction.\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename Node , typename... Indices>\n+ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd (Node &&node, Indices... indices)\n+\u00a0 Extracts the child of a node given by a sequence of\n+ compile-time and run-time indices.\n+\u00a0\n+template<typename Node , typename... Indices>\n+ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node &&node, Indices...\n+ indices)\n+\u00a0\n+template<typename Node , typename... Indices>\n+ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd (Node &&node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n+ Indices... > _\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n+\u00a0 Extracts the child of a node given by a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+ object.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00008_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00008_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: proxynode.hh Source File</title>\n+<title>dune-typetree: childextraction.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,397 +74,290 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">proxynode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">childextraction.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<a href=\"a00008.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n+<a href=\"a00008.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_PROXYNODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_PROXYNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">class </span>ProxyNode;</div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ProxiedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00029\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html\"> 29</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<ProxiedNode>::type>::value;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">struct </span>lazy_enabled</div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <utility></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/concept.hh></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">namespace </span>Impl {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"comment\">// check at run time whether index is a valid child index</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Node, <span class=\"keyword\">class</span> Index></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> std::true_type checkChildIndex (Node <span class=\"keyword\">const</span>& node, Index i)</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> value = !proxiedNodeIsConst;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> };</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01296.html\">ProxyNode<ProxiedNode></a> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> node ()</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> {</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> assert(std::size_t(i) < node.degree() && <span class=\"stringliteral\">"Child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keywordflow\">return</span> {};</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> }</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"comment\">// check at compile time whether index is a valid index</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Node, std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> std::bool_constant<(i < Node::degree())> checkChildIndex (Node <span class=\"keyword\">const</span>& node, index_constant<i>)</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">static_assert</span>(i < Node::degree(), <span class=\"stringliteral\">"Child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> {};</div>\n <div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> }</div>\n <div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>& node ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><span class=\"keyword\">const </span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> }</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01308.html\"> 58</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01308.html\">Child</a></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> : <span class=\"keyword\">public</span> ProxiedNode::template <a class=\"code hl_struct\" href=\"a01308.html\">Child</a><k></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\"> 71</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> {</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template child<k>();</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\"> 81</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template child<k>();</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\"> 92</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\">childStorage</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template childStorage<k>();</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"comment\">// finally return the node itself if no further indices are provided. Break condition</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// for the recursion over the node childs.</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childImpl (Node&& node)</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keywordflow\">return</span> std::forward<Node>(node);</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> }</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodePtr></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">auto</span> childStorageImpl (NodePtr&& nodePtr)</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> <span class=\"keywordflow\">return</span> std::forward<NodePtr>(nodePtr);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> }</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"comment\">// recursively call `node.child(...)` with the given indices</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node, <span class=\"keyword\">class </span>I0, <span class=\"keyword\">class</span>... I></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childImpl (Node&& node, I0 i0, [[maybe_unused]] I... i)</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">auto</span> valid = checkChildIndex(node,i0);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (valid)</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keywordflow\">return</span> childImpl(node.child(i0),i...);</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"comment\">// recursively call `node.childStorage(...)` with the given indices</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>NodePtr, <span class=\"keyword\">class </span>I0, <span class=\"keyword\">class</span>... I></div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childStorageImpl (NodePtr&& nodePtr, I0 i0, [[maybe_unused]] I... i)</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> {</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">auto</span> valid = checkChildIndex(*nodePtr,i0);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (valid)</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">return</span> childStorageImpl(nodePtr->childStorage(i0),i...);</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"comment\">// forward to the impl methods by extracting the indices from the treepath</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node, <span class=\"keyword\">class</span>... Indices, std::size_t... i></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, [[maybe_unused]] HybridTreePath<Indices...> tp, std::index_sequence<i...>)</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> {</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keywordflow\">return</span> childImpl(std::forward<Node>(node),treePathEntry<i>(tp)...);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> }</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">// forward to the impl methods by extracting the indices from the treepath</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>NodePtr, <span class=\"keyword\">class</span>... Indices, std::size_t... i></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (NodePtr&& nodePtr, [[maybe_unused]] HybridTreePath<Indices...> tp, std::index_sequence<i...>)</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> {</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keywordflow\">return</span> childStorageImpl(std::forward<NodePtr>(nodePtr),treePathEntry<i>(tp)...);</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> }</div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\"> 105</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> {</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template childStorage<k>();</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k, <span class=\"keyword\">class</span> ProxyChild></div>\n-<div class=\"foldopen\" id=\"foldopen00112\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\"> 112</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\">setChild</a> (ProxyChild&& <a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value,<span class=\"keywordtype\">void</span>*>::type = 0)</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> {</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> node().proxiedNode().template setChild<k>(std::forward<ProxyChild>(<a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a>));</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\"> 117</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> ProxiedNode::NodeStorage& <a class=\"code hl_function\" href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keywordflow\">return</span> node().proxiedNode().nodeStorage();</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ProxiedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html\"> 131</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a></div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><ProxiedNode></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> {</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01296.html\">ProxyNode<ProxiedNode></a> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<ProxiedNode>::type>::value;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> node ()</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> }</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>& node ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><span class=\"keyword\">const </span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> }</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst,</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">typename</span> std::enable_if<enabled, int>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00162\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\"> 162</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> {</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keywordflow\">return</span> node().proxiedNode().child(i);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\"> 171</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keywordflow\">return</span> node().proxiedNode().child(i);</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">typename</span> std::enable_if<enabled, int>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00182\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\"> 182</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\">childStorage</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> {</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keywordflow\">return</span> node().proxiedNode().childStorage(i);</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00194\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\"> 194</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> node().proxiedNode().childStorage(i);</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> ProxyChild, <span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n-<div class=\"foldopen\" id=\"foldopen00201\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\"> 201</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\">setChild</a> (std::size_t i, ProxyChild&& <a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<enabled,void*>::type = 0)</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> {</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> node().proxiedNode().setChild(i, std::forward<ProxyChild>(<a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a>));</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> NodeTag></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01316.html\"> 210</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a>;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> } <span class=\"comment\">// end namespace Impl</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\"> 128</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> {</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keywordflow\">return</span> Impl::childImpl(std::forward<Node>(node),indices...);</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"foldopen\" id=\"foldopen00138\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\"> 138</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(Indices) > 0, <span class=\"stringliteral\">"childStorage() cannot be called with an empty list of child indices"</span>);</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keywordflow\">return</span> Impl::childStorageImpl(&node,indices...);</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gae4133f4dba113143455fcab49d8a103e\"> 173</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Indices...></a> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Indices...></a> tp)</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> {</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keywordflow\">return</span> Impl::child(std::forward<Node>(node),tp,std::index_sequence_for<Indices...>{});</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, HybridTreePath<Indices...> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, HybridTreePath<Indices...> tp)</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> {</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(Indices) > 0, <span class=\"stringliteral\">"childStorage() cannot be called with an empty TreePath"</span>);</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keywordflow\">return</span> Impl::childStorage(&node,tp,std::index_sequence_for<Indices...>{});</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> }</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> <span class=\"keyword\">namespace </span>impl {</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">struct </span>filter_void</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> {</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">using </span>type = T;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> };</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><></div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">struct </span>filter_void<void></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {};</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t... indices></div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keyword\">struct </span>_Child</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> : <span class=\"keyword\">public</span> filter_void<std::decay_t<decltype(child(std::declval<Node>(),index_constant<indices>{}...))>></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> {};</div>\n <div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> </div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01320.html\"> 214</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><Node,<a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a>></div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> };</div>\n-</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> }</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> </div>\n <div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00220\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html\"> 220</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a>></div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><Node></div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> {</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\"> 223</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildTypes <a class=\"code hl_typedef\" href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\">ChildTypes</a>;</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\"> 224</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> };</div>\n-</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t... indices></div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\"> 225</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = <span class=\"keyword\">typename</span> impl::_Child<Node,indices...>::type;</div>\n <div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html\"> 229</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a>></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node></div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> {</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\"> 232</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildType <a class=\"code hl_typedef\" href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\">ChildType</a>;</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\"> 233</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00238\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html\"> 238</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a>></div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node></div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> {</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\"> 241</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildType <a class=\"code hl_typedef\" href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\">ChildType</a>;</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html#a7564689493e427ad4869491a4ef06727\"> 242</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01332.html#a7564689493e427ad4869491a4ef06727\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> </div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00253\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html\"> 253</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01296.html\">ProxyNode</a></div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><Node,NodeTag<Node>></div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> {</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<Node>::type>::value;</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> N></div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">using </span>HasStaticDegree = index_constant<N::degree()>;</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> N></div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a9250e9e54ae16676cda0a71c6df6cccd\"> 262</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> hasStaticDegree = Std::is_detected<HasStaticDegree, N>::value;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"comment\">// accessor mixins need to be friends for access to proxiedNode()</span></div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><Node>;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node>;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\"> 270</a></span> <span class=\"keyword\">typedef</span> Node <a class=\"code hl_typedef\" href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\">ProxiedNode</a>;</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> </div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\"> 272</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag<Node></a> <a class=\"code hl_typedef\" href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\">NodeTag</a>;</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\"> 275</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\">isLeaf</a> = Node::isLeaf;</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> <span class=\"keyword\">namespace </span>impl {</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"keyword\">struct </span>_ChildForTreePath</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> {</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> <span class=\"keyword\">using </span>type = <span class=\"keyword\">typename</span> std::decay<decltype(child(std::declval<Node>(),std::declval<TreePath>()))>::type;</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> };</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\"> 252</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">ChildForTreePath</a> = <span class=\"keyword\">typename</span> impl::_ChildForTreePath<Node,TreePath>::type;</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> </div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> </div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> <span class=\"keyword\">namespace </span>impl {</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"comment\">// By default, types are flat indices if they are integral</span></div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">struct </span>_is_flat_index</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> {</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> <span class=\"keyword\">using </span>type = std::is_integral<T>;</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> };</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> </div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> <span class=\"comment\">// And so is any index_constant</span></div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">struct </span>_is_flat_index<index_constant<i>></div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> {</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">using </span>type = std::true_type;</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> };</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> </div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\"> 278</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\">isPower</a> = Node::isPower;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\"> 281</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\">isComposite</a> = Node::isComposite;</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>N = Node,</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> std::enable_if_t<hasStaticDegree<N>, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00285\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\"> 285</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\">degree</a> ()</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> {</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> <span class=\"keywordflow\">return</span> N::degree();</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span><span class=\"comment\"> * This type trait can be used to check whether T is a flat index (i.e. either `std::size_t`</span></div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span><span class=\"comment\"> * or `index_constant`). The type trait normalizes T before doing the check, so it will also</span></div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span><span class=\"comment\"> * work correctly for references and cv-qualified types.</span></div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\"> 284</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">is_flat_index</a> = <span class=\"keyword\">typename</span> impl::_is_flat_index<std::decay_t<T>>::type;</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> </div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">namespace </span>impl {</div>\n <div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>N = Node,</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::enable_if_t<not hasStaticDegree<N>, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00292\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a773824f1bc058297482fd93269ce227a\"> 292</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01296.html#a773824f1bc058297482fd93269ce227a\">degree</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">proxiedNode</a>().degree();</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> </div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"comment\">// helper function for check in member child() functions that tolerates being passed something that</span></div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> <span class=\"comment\">// isn't a TreePath. It will just return 0 in that case</span></div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> </div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index<T>::value</a>,</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> >::type</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> _non_empty_tree_path (T)</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> {</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> }</div>\n <div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n-<div class=\"foldopen\" id=\"foldopen00306\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\"> 306</a></span> <a class=\"code hl_function\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">proxiedNode</a> ()</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> {</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> <span class=\"keywordflow\">return</span> *_node;</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\"> 312</a></span> <span class=\"keyword\">const</span> Node& <a class=\"code hl_function\" href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\">proxiedNode</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keywordflow\">return</span> *_node;</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> !<a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index<T>::value</a>,</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> >::type</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> _non_empty_tree_path (T t)</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> {</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(t) > 0;</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> }</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> }</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,std::shared_ptr<Node> >::type</div>\n-<div class=\"foldopen\" id=\"foldopen00320\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\"> 320</a></span> <a class=\"code hl_function\" href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\">proxiedNodeStorage</a> ()</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> {</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> <span class=\"keywordflow\">return</span> _node;</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\"> 326</a></span> std::shared_ptr<const Node> <a class=\"code hl_function\" href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\">proxiedNodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">return</span> _node;</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> </div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00336\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\"> 336</a></span> <a class=\"code hl_function\" href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\">ProxyNode</a> (Node& node)</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> : _node(stackobject_to_shared_ptr(node))</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00340\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\"> 340</a></span> <a class=\"code hl_function\" href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\">ProxyNode</a> (std::shared_ptr<Node> node)</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> : _node(std::move(node))</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> </div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> </div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> </div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> std::shared_ptr<Node> _node;</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> </div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> </div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_PROXYNODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> </div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> </div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga5832a3bb33ab6b058aee3b201699584a\"><div class=\"ttname\"><a href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index</a></div><div class=\"ttdeci\">typename impl::_is_flat_index< std::decay_t< T > >::type is_flat_index</div><div class=\"ttdoc\">Type trait that determines whether T is a flat index in the context of child extraction.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:284</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga6d60a84ddd0be65b0cae4a5e6032a52a\"><div class=\"ttname\"><a href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">Dune::TypeTree::childStorage</a></div><div class=\"ttdeci\">ImplementationDefined childStorage(Node &&node, Indices... indices)</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:138</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gac7126c2c9df855877ce3e71c77738398\"><div class=\"ttname\"><a href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">Dune::TypeTree::ChildForTreePath</a></div><div class=\"ttdeci\">typename impl::_ChildForTreePath< Node, TreePath >::type ChildForTreePath</div><div class=\"ttdoc\">Template alias for the type of a child node given by a TreePath or a HybridTreePath type.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:252</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n-<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n-<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n-<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n-<div class=\"ttc\" id=\"aa01296_html\"><div class=\"ttname\"><a href=\"a01296.html\">Dune::TypeTree::ProxyNode</a></div><div class=\"ttdoc\">Base class for nodes acting as a proxy for an existing node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:255</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a0e43d09ca7852c6cff4e7f9fc1ed1929\"><div class=\"ttname\"><a href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\">Dune::TypeTree::ProxyNode::ProxyNode</a></div><div class=\"ttdeci\">ProxyNode(Node &node)</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:336</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a39eec235919e0d128ca716e7f1bb4301\"><div class=\"ttname\"><a href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\">Dune::TypeTree::ProxyNode::NodeTag</a></div><div class=\"ttdeci\">Dune::TypeTree::NodeTag< Node > NodeTag</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:272</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a3e24b0feb227820603f2cee4f74806a5\"><div class=\"ttname\"><a href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\">Dune::TypeTree::ProxyNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:281</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a4ebc1c794a42b66170eafe043bb367fd\"><div class=\"ttname\"><a href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\">Dune::TypeTree::ProxyNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:275</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a725892f3549722c422b395ca3c2344f8\"><div class=\"ttname\"><a href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\">Dune::TypeTree::ProxyNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:278</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a773824f1bc058297482fd93269ce227a\"><div class=\"ttname\"><a href=\"a01296.html#a773824f1bc058297482fd93269ce227a\">Dune::TypeTree::ProxyNode::degree</a></div><div class=\"ttdeci\">auto degree() const</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:292</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a87a5b982d768c50dcdfe6e58935d9e6a\"><div class=\"ttname\"><a href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">Dune::TypeTree::ProxyNode::proxiedNode</a></div><div class=\"ttdeci\">std::enable_if< enabled, Node & >::type proxiedNode()</div><div class=\"ttdoc\">Returns the proxied node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:306</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a959a07afebc401315a1a872cf94a7622\"><div class=\"ttname\"><a href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\">Dune::TypeTree::ProxyNode::proxiedNodeStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const Node > proxiedNodeStorage() const</div><div class=\"ttdoc\">Returns the storage of the proxied node (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:326</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\"><div class=\"ttname\"><a href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\">Dune::TypeTree::ProxyNode::ProxiedNode</a></div><div class=\"ttdeci\">Node ProxiedNode</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:270</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_aac016f3d0dbf5ba599a749b5c1d109e6\"><div class=\"ttname\"><a href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\">Dune::TypeTree::ProxyNode::proxiedNodeStorage</a></div><div class=\"ttdeci\">std::enable_if< enabled, std::shared_ptr< Node > >::type proxiedNodeStorage()</div><div class=\"ttdoc\">Returns the storage of the proxied node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:320</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_ab94a45822377d91e704d51f73e3e00d8\"><div class=\"ttname\"><a href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\">Dune::TypeTree::ProxyNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:285</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_ac693971042ac6c4fcd88fc734f026c69\"><div class=\"ttname\"><a href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\">Dune::TypeTree::ProxyNode::ProxyNode</a></div><div class=\"ttdeci\">ProxyNode(std::shared_ptr< Node > node)</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:340</div></div>\n-<div class=\"ttc\" id=\"aa01296_html_ae8ad599d06ebb27b3f18cafd012820fa\"><div class=\"ttname\"><a href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\">Dune::TypeTree::ProxyNode::proxiedNode</a></div><div class=\"ttdeci\">const Node & proxiedNode() const</div><div class=\"ttdoc\">Returns the proxied node (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:312</div></div>\n-<div class=\"ttc\" id=\"aa01300_html\"><div class=\"ttname\"><a href=\"a01300.html\">Dune::TypeTree::StaticChildAccessors</a></div><div class=\"ttdoc\">Mixin class providing methods for child access with compile-time parameter.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:30</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_a0465bd204efa9b689222b3a2943d0c77\"><div class=\"ttname\"><a href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">Dune::TypeTree::StaticChildAccessors::child</a></div><div class=\"ttdeci\">auto & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:71</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_a33cbc09c786c2977e8641d3987c0e98e\"><div class=\"ttname\"><a href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\">Dune::TypeTree::StaticChildAccessors::setChild</a></div><div class=\"ttdeci\">void setChild(ProxyChild &&child, typename std::enable_if< lazy_enabled< k >::value, void * >::type=0)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:112</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_a48e590e8ed858f0dc989fa1fbd8e78eb\"><div class=\"ttname\"><a href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\">Dune::TypeTree::StaticChildAccessors::nodeStorage</a></div><div class=\"ttdeci\">const ProxiedNode::NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:117</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_a4da4d39ef89fb67364b64a42cf3a3543\"><div class=\"ttname\"><a href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\">Dune::TypeTree::StaticChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:92</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_abf959440efcbef495ee7c524a8a1e5a7\"><div class=\"ttname\"><a href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\">Dune::TypeTree::StaticChildAccessors::child</a></div><div class=\"ttdeci\">const auto & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:81</div></div>\n-<div class=\"ttc\" id=\"aa01300_html_ad42d61a7ebb201c65f212e58e4adc653\"><div class=\"ttname\"><a href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\">Dune::TypeTree::StaticChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:105</div></div>\n-<div class=\"ttc\" id=\"aa01308_html\"><div class=\"ttname\"><a href=\"a01308.html\">Dune::TypeTree::StaticChildAccessors::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:60</div></div>\n-<div class=\"ttc\" id=\"aa01312_html\"><div class=\"ttname\"><a href=\"a01312.html\">Dune::TypeTree::DynamicChildAccessors</a></div><div class=\"ttdoc\">Mixin class providing methods for child access with run-time parameter.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:133</div></div>\n-<div class=\"ttc\" id=\"aa01312_html_a180603eb511bd54f88dd36798c78397f\"><div class=\"ttname\"><a href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">Dune::TypeTree::DynamicChildAccessors::child</a></div><div class=\"ttdeci\">auto & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:162</div></div>\n-<div class=\"ttc\" id=\"aa01312_html_a36a708aacc0fca38b7907f520f853e33\"><div class=\"ttname\"><a href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\">Dune::TypeTree::DynamicChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:194</div></div>\n-<div class=\"ttc\" id=\"aa01312_html_a56532e70044f0cf99d685ef8404526ad\"><div class=\"ttname\"><a href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\">Dune::TypeTree::DynamicChildAccessors::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ProxyChild &&child, typename std::enable_if< enabled, void * >::type=0)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:201</div></div>\n-<div class=\"ttc\" id=\"aa01312_html_a8b0507820f4fca1fe800bfc320c70967\"><div class=\"ttname\"><a href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\">Dune::TypeTree::DynamicChildAccessors::child</a></div><div class=\"ttdeci\">const auto & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:171</div></div>\n-<div class=\"ttc\" id=\"aa01312_html_ad289345935ae040ca5c68eb707a204e7\"><div class=\"ttname\"><a href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\">Dune::TypeTree::DynamicChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:182</div></div>\n-<div class=\"ttc\" id=\"aa01316_html\"><div class=\"ttname\"><a href=\"a01316.html\">Dune::TypeTree::ProxyNodeBase</a></div><div class=\"ttdoc\">Tag-based dispatch to appropriate base class that provides necessary functionality.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:210</div></div>\n-<div class=\"ttc\" id=\"aa01324_html_a72e8738e0ca3193fe904d5d008992c7e\"><div class=\"ttname\"><a href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:224</div></div>\n-<div class=\"ttc\" id=\"aa01324_html_a7e5a68dd6b33b9f6c4ea322f86dd9691\"><div class=\"ttname\"><a href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag >::ChildTypes</a></div><div class=\"ttdeci\">Node::ChildTypes ChildTypes</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:223</div></div>\n-<div class=\"ttc\" id=\"aa01328_html_a0e2dc0a5b1308336816c493ebae550e6\"><div class=\"ttname\"><a href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:233</div></div>\n-<div class=\"ttc\" id=\"aa01328_html_a441ea16cffb44710d41ef4c8a32e7a1e\"><div class=\"ttname\"><a href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag >::ChildType</a></div><div class=\"ttdeci\">Node::ChildType ChildType</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:232</div></div>\n-<div class=\"ttc\" id=\"aa01332_html_a7564689493e427ad4869491a4ef06727\"><div class=\"ttname\"><a href=\"a01332.html#a7564689493e427ad4869491a4ef06727\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:242</div></div>\n-<div class=\"ttc\" id=\"aa01332_html_ae342ab8db1a7233f9063a232116ea755\"><div class=\"ttname\"><a href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag >::ChildType</a></div><div class=\"ttdeci\">Node::ChildType ChildType</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:241</div></div>\n+<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,446 +1,323 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-proxynode.hh\n+childextraction.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=4 sw=2 sts=2:\n+1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=8 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_PROXYNODE_HH\n-7#define DUNE_TYPETREE_PROXYNODE_HH\n+6#ifndef DUNE_TYPETREE_CHILDEXTRACTION_HH\n+7#define DUNE_TYPETREE_CHILDEXTRACTION_HH\n 8\n 9#include <type_traits>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-12#include <dune/common/shared_ptr.hh>\n-13#include <dune/common/indices.hh>\n-14#include <dune/common/std/type_traits.hh>\n-15\n-16namespace _\bD_\bu_\bn_\be {\n-17 namespace TypeTree {\n-18\n-24 template<typename Node>\n-25 class ProxyNode;\n-26\n-28 template<typename ProxiedNode>\n-_\b2_\b9 class _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n-30 {\n-31\n-32 static const bool proxiedNodeIsConst = std::is_const<typename std::\n-remove_reference<ProxiedNode>::type>::value;\n-33\n-34 template<std::size_t k>\n-35 struct lazy_enabled\n+10#include <utility>\n+11\n+12#include <dune/common/concept.hh>\n+13#include <dune/common/documentation.hh>\n+14#include <dune/common/typetraits.hh>\n+15#include <dune/common/shared_ptr.hh>\n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+19\n+20\n+21namespace _\bD_\bu_\bn_\be {\n+22 namespace TypeTree {\n+23\n+28\n+29#ifndef DOXYGEN\n+30\n+31 namespace Impl {\n+32\n+33 // check at run time whether index is a valid child index\n+34 template <class Node, class Index>\n+35 std::true_type checkChildIndex (Node const& node, Index i)\n 36 {\n-37 static const bool value = !proxiedNodeIsConst;\n-38 };\n-39\n-40 typedef _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be;\n-41\n-42 template<bool enabled = !proxiedNodeIsConst>\n-43 typename std::enable_if<enabled,Node&>::type\n-44 node ()\n-45 {\n-46 return static_cast<_\bN_\bo_\bd_\be&>(*this);\n+37 assert(std::size_t(i) < node.degree() && \"Child index out of range\");\n+38 return {};\n+39 }\n+40\n+41 // check at compile time whether index is a valid index\n+42 template <class Node, std::size_t i>\n+43 std::bool_constant<(i < Node::degree())> checkChildIndex (Node const& node,\n+index_constant<i>)\n+44 {\n+45 static_assert(i < Node::degree(), \"Child index out of range\");\n+46 return {};\n 47 }\n 48\n-49 const _\bN_\bo_\bd_\be& node () const\n-50 {\n-51 return static_cast<const _\bN_\bo_\bd_\be&>(*this);\n-52 }\n-53\n-54 public:\n-55\n-57 template<std::size_t k>\n-_\b5_\b8 struct _\bC_\bh_\bi_\bl_\bd\n-59 : public ProxiedNode::template _\bC_\bh_\bi_\bl_\bd<k>\n-60 {};\n-61\n-64\n-66\n-69 template<std::size_t k,\n-70 typename std::enable_if<lazy_enabled<k>::value, int>::type = 0>\n-_\b7_\b1 auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n-72 {\n-73 return node().proxiedNode().template child<k>();\n-74 }\n-75\n-77\n-80 template<std::size_t k>\n-_\b8_\b1 const auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n-82 {\n-83 return node().proxiedNode().template child<k>();\n-84 }\n-85\n-87\n-90 template<std::size_t k,\n-91 typename std::enable_if<lazy_enabled<k>::value, int>::type = 0>\n-_\b9_\b2 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {})\n-93 {\n-94 return node().proxiedNode().template childStorage<k>();\n-95 }\n-96\n+49 // finally return the node itself if no further indices are provided. Break\n+condition\n+50 // for the recursion over the node childs.\n+51 template<class Node>\n+52 decltype(auto) childImpl (Node&& node)\n+53 {\n+54 return std::forward<Node>(node);\n+55 }\n+56\n+57 template<class NodePtr>\n+58 auto childStorageImpl (NodePtr&& nodePtr)\n+59 {\n+60 return std::forward<NodePtr>(nodePtr);\n+61 }\n+62\n+63 // recursively call `node.child(...)` with the given indices\n+64 template<class Node, class I0, class... I>\n+65 decltype(auto) childImpl (Node&& node, I0 i0, [[maybe_unused]] I... i)\n+66 {\n+67 auto valid = checkChildIndex(node,i0);\n+68 if constexpr (valid)\n+69 return childImpl(node.child(i0),i...);\n+70 else\n+71 return;\n+72 }\n+73\n+74 // recursively call `node.childStorage(...)` with the given indices\n+75 template<class NodePtr, class I0, class... I>\n+76 decltype(auto) childStorageImpl (NodePtr&& nodePtr, I0 i0, [[maybe_unused]]\n+I... i)\n+77 {\n+78 auto valid = checkChildIndex(*nodePtr,i0);\n+79 if constexpr (valid)\n+80 return childStorageImpl(nodePtr->childStorage(i0),i...);\n+81 else\n+82 return;\n+83 }\n+84\n+85 // forward to the impl methods by extracting the indices from the treepath\n+86 template<class Node, class... Indices, std::size_t... i>\n+87 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, [[maybe_unused]]\n+HybridTreePath<Indices...> tp, std::index_sequence<i...>)\n+88 {\n+89 return childImpl(std::forward<Node>(node),treePathEntry<i>(tp)...);\n+90 }\n+91\n+92 // forward to the impl methods by extracting the indices from the treepath\n+93 template<class NodePtr, class... Indices, std::size_t... i>\n+94 decltype(auto) _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (NodePtr&& nodePtr, [[maybe_unused]]\n+HybridTreePath<Indices...> tp, std::index_sequence<i...>)\n+95 {\n+96 return childStorageImpl(std::forward<NodePtr>(nodePtr),treePathEntry<i>\n+(tp)...);\n+97 }\n 98\n-104 template<std::size_t k>\n-_\b1_\b0_\b5 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {}) const\n-106 {\n-107 return node().proxiedNode().template childStorage<k>();\n-108 }\n-109\n-111 template<std::size_t k, class ProxyChild>\n-_\b1_\b1_\b2 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (ProxyChild&& _\bc_\bh_\bi_\bl_\bd, typename std::\n-enable_if<lazy_enabled<k>::value,void*>::type = 0)\n-113 {\n-114 node().proxiedNode().template setChild<k>(std::forward<ProxyChild>(_\bc_\bh_\bi_\bl_\bd));\n-115 }\n-116\n-_\b1_\b1_\b7 const typename ProxiedNode::NodeStorage& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-118 {\n-119 return node().proxiedNode().nodeStorage();\n-120 }\n-121\n-122 };\n-123\n-125\n-130 template<typename ProxiedNode>\n-_\b1_\b3_\b1 class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n-132 : public _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<ProxiedNode>\n-133 {\n-134\n-135 typedef _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be;\n-136\n-137 static const bool proxiedNodeIsConst = std::is_const<typename std::\n-remove_reference<ProxiedNode>::type>::value;\n-138\n-139 template<bool enabled = !proxiedNodeIsConst>\n-140 typename std::enable_if<enabled,Node&>::type\n-141 node ()\n+99 } // end namespace Impl\n+100\n+101#endif // DOXYGEN\n+102\n+104\n+126 template<typename Node, typename... Indices>\n+127#ifdef DOXYGEN\n+_\b1_\b2_\b8 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, Indices... indices)\n+129#else\n+130 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, Indices... indices)\n+131#endif\n+132 {\n+133 return Impl::childImpl(std::forward<Node>(node),indices...);\n+134 }\n+135\n+136 template<typename Node, typename... Indices>\n+137#ifdef DOXYGEN\n+_\b1_\b3_\b8 ImplementationDefined _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, Indices... indices)\n+139#else\n+140 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, Indices... indices)\n+141#endif\n 142 {\n-143 return static_cast<_\bN_\bo_\bd_\be&>(*this);\n-144 }\n-145\n-146 const _\bN_\bo_\bd_\be& node () const\n-147 {\n-148 return static_cast<const _\bN_\bo_\bd_\be&>(*this);\n-149 }\n-150\n-151 public:\n-152\n-155\n-157\n-160 template<bool enabled = !proxiedNodeIsConst,\n-161 typename std::enable_if<enabled, int>::type = 0>\n-_\b1_\b6_\b2 auto& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n-163 {\n-164 return node().proxiedNode().child(i);\n-165 }\n-166\n-168\n-_\b1_\b7_\b1 const auto& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n-172 {\n-173 return node().proxiedNode().child(i);\n-174 }\n-175\n-177\n-180 template<bool enabled = !proxiedNodeIsConst,\n-181 typename std::enable_if<enabled, int>::type = 0>\n-_\b1_\b8_\b2 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n-183 {\n-184 return node().proxiedNode().childStorage(i);\n-185 }\n-186\n-188\n-_\b1_\b9_\b4 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n-195 {\n-196 return node().proxiedNode().childStorage(i);\n-197 }\n-198\n-200 template<class ProxyChild, bool enabled = !proxiedNodeIsConst>\n-_\b2_\b0_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, ProxyChild&& _\bc_\bh_\bi_\bl_\bd, typename std::\n-enable_if<enabled,void*>::type = 0)\n-202 {\n-203 node().proxiedNode().setChild(i, std::forward<ProxyChild>(_\bc_\bh_\bi_\bl_\bd));\n-204 }\n-205\n-206 };\n-207\n-209 template<typename Node, typename NodeTag>\n-_\b2_\b1_\b0 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be;\n+143 static_assert(sizeof...(Indices) > 0, \"childStorage() cannot be called with\n+an empty list of child indices\");\n+144 return Impl::childStorageImpl(&node,indices...);\n+145 }\n+146\n+148\n+171 template<typename Node, typename... Indices>\n+172#ifdef DOXYGEN\n+_\b1_\b7_\b3 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\b._\b._\b>\n+_\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n+174#else\n+175 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\b._\b._\b> tp)\n+176#endif\n+177 {\n+178 return Impl::child(std::forward<Node>(node),tp,std::\n+index_sequence_for<Indices...>{});\n+179 }\n+180\n+181 template<typename Node, typename... Indices>\n+182#ifdef DOXYGEN\n+183 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, HybridTreePath<Indices...>\n+_\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n+184#else\n+185 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, HybridTreePath<Indices...> tp)\n+186#endif\n+187 {\n+188 static_assert(sizeof...(Indices) > 0, \"childStorage() cannot be called with\n+an empty TreePath\");\n+189 return Impl::childStorage(&node,tp,std::index_sequence_for<Indices...>{});\n+190 }\n+191\n+192\n+193#ifndef DOXYGEN\n+194\n+195 namespace impl {\n+196\n+197 template<typename T>\n+198 struct filter_void\n+199 {\n+200 using type = T;\n+201 };\n+202\n+203 template<>\n+204 struct filter_void<void>\n+205 {};\n+206\n+207 template<typename Node, std::size_t... indices>\n+208 struct _Child\n+209 : public filter_void<std::decay_t<decltype(child(std::declval<Node>\n+(),index_constant<indices>{}...))>>\n+210 {};\n 211\n-213 template<typename Node>\n-_\b2_\b1_\b4 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<Node,_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n-215 {\n-216 };\n+212 }\n+213\n+214#endif // DOXYGEN\n+215\n 217\n-219 template<typename Node>\n-_\b2_\b2_\b0 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n-221 : public _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n-222 {\n-_\b2_\b2_\b3 typedef typename Node::ChildTypes _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n-_\b2_\b2_\b4 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-225 };\n+224 template<typename Node, std::size_t... indices>\n+_\b2_\b2_\b5 using _\bC_\bh_\bi_\bl_\bd = typename impl::_Child<Node,indices...>::type;\n 226\n-228 template<typename Node>\n-_\b2_\b2_\b9 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n-230 : public _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n-231 {\n-_\b2_\b3_\b2 typedef typename Node::ChildType _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n-_\b2_\b3_\b3 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-234 };\n-235\n-237 template<typename Node>\n-_\b2_\b3_\b8 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n-239 : public _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n-240 {\n-_\b2_\b4_\b1 typedef typename Node::ChildType _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n-_\b2_\b4_\b2 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-243 };\n-244\n-246\n-252 template<typename Node>\n-_\b2_\b5_\b3 class _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n-254 : public _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<Node,NodeTag<Node>>\n-255 {\n-256 static const bool proxiedNodeIsConst = std::is_const<typename std::\n-remove_reference<Node>::type>::value;\n-257\n-258 template <class N>\n-259 using HasStaticDegree = index_constant<N::degree()>;\n-260\n-261 template <class N>\n-_\b2_\b6_\b2 static constexpr bool hasStaticDegree = Std::is_detected<HasStaticDegree,\n-N>::value;\n-263\n-264 // accessor mixins need to be friends for access to proxiedNode()\n-265 friend class _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>;\n-266 friend class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>;\n-267\n-268 public:\n-269\n-_\b2_\b7_\b0 typedef Node _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be;\n-271\n-_\b2_\b7_\b2 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n-273\n-_\b2_\b7_\b5 static const bool _\bi_\bs_\bL_\be_\ba_\bf = Node::isLeaf;\n+227\n+228#ifndef DOXYGEN\n+229\n+230 namespace impl {\n+231\n+232 template<typename Node, typename TreePath>\n+233 struct _ChildForTreePath\n+234 {\n+235 using type = typename std::decay<decltype(child(std::declval<Node>(),std::\n+declval<TreePath>()))>::type;\n+236 };\n+237\n+238 }\n+239\n+240#endif // DOXYGEN\n+241\n+243\n+251 template<typename Node, typename TreePath>\n+_\b2_\b5_\b2 using _\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = typename impl::_ChildForTreePath<Node,TreePath>::\n+type;\n+253\n+254\n+255#ifndef DOXYGEN\n+256\n+257 namespace impl {\n+258\n+259 // By default, types are flat indices if they are integral\n+260 template<typename T>\n+261 struct _is_flat_index\n+262 {\n+263 using type = std::is_integral<T>;\n+264 };\n+265\n+266 // And so is any index_constant\n+267 template<std::size_t i>\n+268 struct _is_flat_index<index_constant<i>>\n+269 {\n+270 using type = std::true_type;\n+271 };\n+272\n+273 }\n+274\n+275#endif // DOXYGEN\n 276\n-_\b2_\b7_\b8 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = Node::isPower;\n-279\n-_\b2_\b8_\b1 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = Node::isComposite;\n-282\n-283 template <class N = Node,\n-284 std::enable_if_t<hasStaticDegree<N>, int> = 0>\n-_\b2_\b8_\b5 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n-286 {\n-287 return N::degree();\n-288 }\n+278 /*\n+279 * This type trait can be used to check whether T is a flat index (i.e.\n+either `std::size_t`\n+280 * or `index_constant`). The type trait normalizes T before doing the check,\n+so it will also\n+281 * work correctly for references and cv-qualified types.\n+282 */\n+283 template<typename T>\n+_\b2_\b8_\b4 using _\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx = typename impl::_is_flat_index<std::decay_t<T>>::type;\n+285\n+286#ifndef DOXYGEN\n+287\n+288 namespace impl {\n 289\n-290 template <class N = Node,\n-291 std::enable_if_t<not hasStaticDegree<N>, int> = 0>\n-_\b2_\b9_\b2 auto _\bd_\be_\bg_\br_\be_\be () const\n-293 {\n-294 return _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be().degree();\n-295 }\n-296\n-297\n-298 protected:\n-299\n+290 // helper function for check in member child() functions that tolerates\n+being passed something that\n+291 // isn't a TreePath. It will just return 0 in that case\n+292\n+293 template<typename T>\n+294 constexpr typename std::enable_if<\n+295 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx_\b<_\bT_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be,\n+296 bool\n+297 >::type\n+298 _non_empty_tree_path (T)\n+299 {\n+300 return false;\n+301 }\n 302\n-304 template<bool enabled = !proxiedNodeIsConst>\n-305 typename std::enable_if<enabled,Node&>::type\n-_\b3_\b0_\b6 _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be ()\n-307 {\n-308 return *_node;\n-309 }\n-310\n-_\b3_\b1_\b2 const Node& _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be () const\n-313 {\n-314 return *_node;\n-315 }\n+303 template<typename T>\n+304 constexpr typename std::enable_if<\n+305 !_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx_\b<_\bT_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be,\n+306 bool\n+307 >::type\n+308 _non_empty_tree_path (T t)\n+309 {\n+310 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(t) > 0;\n+311 }\n+312\n+313 }\n+314\n+315#endif // DOXYGEN\n 316\n-318 template<bool enabled = !proxiedNodeIsConst>\n-319 typename std::enable_if<enabled,std::shared_ptr<Node> >::type\n-_\b3_\b2_\b0 _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be ()\n-321 {\n-322 return _node;\n-323 }\n-324\n-_\b3_\b2_\b6 std::shared_ptr<const Node> _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-327 {\n-328 return _node;\n-329 }\n-330\n-332\n-335\n-_\b3_\b3_\b6 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be (Node& node)\n-337 : _node(stackobject_to_shared_ptr(node))\n-338 {}\n-339\n-_\b3_\b4_\b0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be (std::shared_ptr<Node> node)\n-341 : _node(std::move(node))\n-342 {}\n-343\n-345\n-346 private:\n-347\n-348 std::shared_ptr<Node> _node;\n-349 };\n-350\n-352\n-353 } // namespace TypeTree\n-354} //namespace Dune\n-355\n-356#endif // DUNE_TYPETREE_PROXYNODE_HH\n+318\n+319 } // namespace TypeTree\n+320} //namespace Dune\n+321\n+322#endif // DUNE_TYPETREE_CHILDEXTRACTION_HH\n _\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-typename std::decay_t< Node >::NodeTag NodeTag\n-Returns the node tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx\n+typename impl::_is_flat_index< std::decay_t< T > >::type is_flat_index\n+Type trait that determines whether T is a flat index in the context of child\n+extraction.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:284\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+ImplementationDefined childStorage(Node &&node, Indices... indices)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+typename impl::_Child< Node, indices... >::type Child\n+Template alias for the type of a child node given by a list of child indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+typename impl::_ChildForTreePath< Node, TreePath >::type ChildForTreePath\n+Template alias for the type of a child node given by a TreePath or a\n+HybridTreePath type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n+constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n+Returns the size (number of components) of the given HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a leaf node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node with runtime degree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a composite node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n-Base class for nodes acting as a proxy for an existing node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n-ProxyNode(Node &node)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:336\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Dune::TypeTree::NodeTag< Node > NodeTag\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:272\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:281\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Mark this class as non leaf in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:275\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n-static const bool isPower\n-Mark this class as a non power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-auto degree() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n-std::enable_if< enabled, Node & >::type proxiedNode()\n-Returns the proxied node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< const Node > proxiedNodeStorage() const\n-Returns the storage of the proxied node (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n-Node ProxiedNode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::enable_if< enabled, std::shared_ptr< Node > >::type proxiedNodeStorage()\n-Returns the storage of the proxied node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static constexpr auto degree()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n-ProxyNode(std::shared_ptr< Node > node)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:340\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n-const Node & proxiedNode() const\n-Returns the proxied node (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n-Mixin class providing methods for child access with compile-time parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-auto & child(index_constant< k >={})\n-Returns the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(ProxyChild &&child, typename std::enable_if< lazy_enabled< k >::\n-value, void * >::type=0)\n-Sets the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-const ProxiedNode::NodeStorage & nodeStorage() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(index_constant< k >={})\n-Returns the storage of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const auto & child(index_constant< k >={}) const\n-Returns the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(index_constant< k >={}) const\n-Returns the storage of the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-Access to the type and storage type of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n-Mixin class providing methods for child access with run-time parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-auto & child(std::size_t i)\n-Returns the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(std::size_t i) const\n-Returns the storage of the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, ProxyChild &&child, typename std::enable_if<\n-enabled, void * >::type=0)\n-Sets the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const auto & child(std::size_t i) const\n-Returns the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(std::size_t i)\n-Returns the storage of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be\n-Tag-based dispatch to appropriate base class that provides necessary\n-functionality.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-Node::NodeStorage NodeStorage\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n-Node::ChildTypes ChildTypes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-Node::NodeStorage NodeStorage\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:233\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n-Node::ChildType ChildType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-Node::NodeStorage NodeStorage\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n-Node::ChildType ChildType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:241\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+A hybrid version of TreePath that supports both compile time and run time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00011.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00011.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: visitor.hh File Reference</title>\n+<title>dune-typetree: powernode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,109 +71,46 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> |\n-<a href=\"#var-members\">Variables</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">visitor.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">powernode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n-<code>#include <dune/common/hybridutilities.hh></code><br />\n+<div class=\"textblock\"><code>#include <cassert></code><br />\n+<code>#include <array></code><br />\n+<code>#include <memory></code><br />\n+<code>#include <type_traits></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <dune/common/std/type_traits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n </div>\n <p><a href=\"a00011_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01560.html\">Dune::TypeTree::DefaultVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> visitors. <a href=\"a01560.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01288.html\">Dune::TypeTree::PowerNode< T, k ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Collect k instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01288.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01564.html\">Dune::TypeTree::DefaultPairVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Visitor interface and base class for visitors of pairs of TypeTrees. <a href=\"a01564.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01568.html\">Dune::TypeTree::Experimental::DefaultHybridVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> hybrid visitors. <a href=\"a01568.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01572.html\">Dune::TypeTree::VisitDirectChildren</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that only want to visit the direct children of a node. <a href=\"a01572.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01576.html\">Dune::TypeTree::VisitDirectChildren::VisitChild< Node1, Child1, Node2, Child2, TreePath ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01576.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01580.html\">Dune::TypeTree::VisitTree</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that want to visit the complete tree. <a href=\"a01580.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01584.html\">Dune::TypeTree::VisitTree::VisitChild< Node1, Child1, Node2, Child2, TreePath ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01584.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01588.html\">Dune::TypeTree::StaticTraversal</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that require a static TreePath during traversal. <a href=\"a01588.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01592.html\">Dune::TypeTree::DynamicTraversal</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that only need a dynamic TreePath during traversal. <a href=\"a01592.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01596.html\">Dune::TypeTree::TreeVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the entire tree. <a href=\"a01596.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01600.html\">Dune::TypeTree::DirectChildrenVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the direct children of a node. <a href=\"a01600.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01604.html\">Dune::TypeTree::TreePairVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting an entire tree pair. <a href=\"a01604.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01608.html\">Dune::TypeTree::DirectChildrenPairVisitor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the direct children of a node pair. <a href=\"a01608.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01612.html\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01616.html\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01620.html\">Dune::TypeTree::Experimental::Info::DepthVisitor</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01292.html\">Dune::TypeTree::PowerNode< T, k >::Child< i ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01292.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00099\" id=\"r_a00099\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html\">Dune::TypeTree::Experimental</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00108\" id=\"r_a00108\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html\">Dune::TypeTree::Experimental::Info</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a7ab47599182e64eb1cfc8d73ccf87c3c\" id=\"r_a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n-<tr class=\"memitem:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">Dune::TypeTree::Experimental::Info::depth</a> (const Tree &tree)</td></tr>\n-<tr class=\"memdesc:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The depth of the <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n-<tr class=\"separator:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a769c643bdde5a9a73adf45d96fec1d6b\" id=\"r_a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n-<tr class=\"memitem:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">Dune::TypeTree::Experimental::Info::depth</a> ()</td></tr>\n-<tr class=\"memdesc:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The depth of the Tree. <br /></td></tr>\n-<tr class=\"separator:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a5785c6c18fde92f5bff32c3096f8a00d\" id=\"r_a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n-<tr class=\"memitem:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a> (const Tree &tree)</td></tr>\n-<tr class=\"memdesc:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The total number of nodes in the Tree. <br /></td></tr>\n-<tr class=\"separator:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a53a6ba5f914d4da3ba5ff80408f21163\" id=\"r_a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n-<tr class=\"memitem:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a> (const Tree &tree)</td></tr>\n-<tr class=\"memdesc:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The number of leaf nodes in the Tree. <br /></td></tr>\n-<tr class=\"separator:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\n-Variables</h2></td></tr>\n-<tr class=\"memitem:a104fe96df2b6e08ed3f71b6aff53fb5c\" id=\"r_a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n-<tr class=\"memitem:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr bool </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">Dune::TypeTree::Experimental::Info::isDynamic</a> = std::is_same<std::size_t, decltype(<a class=\"el\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a>(std::declval<Tree>()))>{}</td></tr>\n-<tr class=\"memdesc:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">true if any of the nodes in the tree only has dynamic degree. <br /></td></tr>\n-<tr class=\"separator:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,106 +1,33 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n-visitor.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-#include <dune/common/hybridutilities.hh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+powernode.hh File Reference\n+#include <cassert>\n+#include <array>\n+#include <memory>\n+#include <type_traits>\n+#include <dune/common/typetraits.hh>\n+#include <dune/common/std/type_traits.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Visitor interface and base class for _\bT_\by_\bp_\be_\bT_\br_\be_\be visitors. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b,_\b _\bk_\b _\b>\n+\u00a0 Collect k instances of type T within a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Visitor interface and base class for visitors of pairs of TypeTrees.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Hybrid visitor interface and base class for _\bT_\by_\bp_\be_\bT_\br_\be_\be hybrid visitors.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-\u00a0 Mixin base class for visitors that only want to visit the direct\n- children of a node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bN_\bo_\bd_\be_\b1_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b1_\b,_\b _\bN_\bo_\bd_\be_\b2_\b,\n- _\bC_\bh_\bi_\bl_\bd_\b2_\b,_\b _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b _\b>\n-\u00a0 Template struct for determining whether or not to visit a given child.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-\u00a0 Mixin base class for visitors that want to visit the complete tree.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bN_\bo_\bd_\be_\b1_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b1_\b,_\b _\bN_\bo_\bd_\be_\b2_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b2_\b,\n- _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b _\b>\n-\u00a0 Template struct for determining whether or not to visit a given child.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-\u00a0 Mixin base class for visitors that require a static TreePath during\n- traversal. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-\u00a0 Mixin base class for visitors that only need a dynamic TreePath during\n- traversal. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Convenience base class for visiting the entire tree. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Convenience base class for visiting the direct children of a node.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Convenience base class for visiting an entire tree pair. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0 Convenience base class for visiting the direct children of a node\n- pair. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b,_\b _\bk_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bi_\b _\b>\n+\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename Tree >\n- auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh (const Tree &tree)\n-\u00a0 The depth of the _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n-\u00a0\n-template<typename Tree >\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh ()\n-\u00a0 The depth of the Tree.\n-\u00a0\n-template<typename Tree >\n- auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt (const Tree\n- &tree)\n-\u00a0 The total number of nodes in the Tree.\n-\u00a0\n-template<typename Tree >\n- auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt (const Tree\n- &tree)\n-\u00a0 The number of leaf nodes in the Tree.\n-\u00a0\n-V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n-template<typename Tree >\n-constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc = std::\n- is_same<std::size_t, decltype(_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt(std::declval<Tree>()))>\n- {}\n-\u00a0 true if any of the nodes in the tree only has dynamic degree.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00011_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00011_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: visitor.hh Source File</title>\n+<title>dune-typetree: powernode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,385 +74,401 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">visitor.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">powernode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00011.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_VISITOR_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_VISITOR_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_POWERNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_POWERNODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00008.html\">dune/typetree/childextraction.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00014.html\">dune/typetree/typetraits.hh</a>></span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\"> 60</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\">pre</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">struct </span>AssertPowerNodeChildCount</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> : <span class=\"keyword\">public</span> std::enable_if<std::is_same<</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> typename PowerNode::ChildType,</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> T>::value &&</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> PowerNode::degree() == k,</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> T></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {};</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html\"> 51</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01288.html\">PowerNode</a></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\"> 57</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\"> 60</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\">isPower</a> = <span class=\"keyword\">true</span>;</div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\"> 72</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\">in</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a909808b4131a00efefcf640df313504f\"> 63</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#a909808b4131a00efefcf640df313504f\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\"> 65</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a> ()</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,k>{};</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\"> 71</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a> <a class=\"code hl_typedef\" href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\"> 74</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\">ChildType</a>;</div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\"> 83</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\">post</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\"> 77</a></span> <span class=\"keyword\">typedef</span> std::array<std::shared_ptr<T>,k> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html\"> 82</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01292.html\">Child</a></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> {</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n <div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\"> 93</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\">leaf</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\"> 88</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\">Type</a>;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\"> 91</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> </div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\"> 107</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\">beforeChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\"> 122</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\">afterChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00163\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html\"> 163</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> {</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\"> 102</a></span> T& <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\"> 113</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\">child</a> (index_constant<i> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\"> 124</a></span> std::shared_ptr<T> <a class=\"code hl_function\" href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\">childStorage</a> (index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00135\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\"> 135</a></span> std::shared_ptr<const T> <a class=\"code hl_function\" href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\">childStorage</a> (index_constant<i> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> {</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00143\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\"> 143</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\">setChild</a> (T& t, index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> {</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00151\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\"> 151</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\">setChild</a> (T&& t, index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> {</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> _children[i] = convert_arg(std::move(t));</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a177c68f780281cea78020f3085aac719\"> 159</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a177c68f780281cea78020f3085aac719\">setChild</a> (std::shared_ptr<T> st, index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> {</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> _children[i] = std::move(st);</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n <div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\"> 176</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\">pre</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\"> 189</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\">in</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00175\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\"> 175</a></span> T& <a class=\"code hl_function\" href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\">child</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> {</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00185\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\"> 185</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> </div>\n <div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\"> 201</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\">post</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"foldopen\" id=\"foldopen00195\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#af5792eced4832509032040dfd86e8c28\"> 195</a></span> std::shared_ptr<T> <a class=\"code hl_function\" href=\"a01288.html#af5792eced4832509032040dfd86e8c28\">childStorage</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> {</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n <div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\"> 216</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\">leaf</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"foldopen\" id=\"foldopen00205\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\"> 205</a></span> std::shared_ptr<const T> <a class=\"code hl_function\" href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00212\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\"> 212</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\">setChild</a> (std::size_t i, T& t)</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> {</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> Child1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> Child2, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\"> 232</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\">beforeChild</a>(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> Child1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> Child2, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#ae58d070f366db82a828982ee6800def1\"> 248</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#ae58d070f366db82a828982ee6800def1\">afterChild</a>(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> </div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> </div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keyword\">namespace </span>Experimental {</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00285\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html\"> 285</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> {</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\"> 296</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\">pre</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> u;}</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> </div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\"> 306</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\">in</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\"> 219</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\">setChild</a> (std::size_t i, T&& t)</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> {</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> _children[i] = convert_arg(std::move(t));</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00226\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a906b42c59829611461f84f484c00e10b\"> 226</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a906b42c59829611461f84f484c00e10b\">setChild</a> (std::size_t i, std::shared_ptr<T> st)</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> {</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> _children[i] = std::move(st);</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00232\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\"> 232</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keywordflow\">return</span> _children;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"comment\">// The following two methods require a little bit of SFINAE trickery to work correctly:</span></div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> <span class=\"comment\">// We have to make sure that they don't shadow the methods for direct child access because</span></div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> <span class=\"comment\">// those get called by the generic child() machinery. If that machinery picks up the methods</span></div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> <span class=\"comment\">// defined below, we have an infinite recursion.</span></div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> <span class=\"comment\">// So the methods make sure that either</span></div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span> <span class=\"comment\">// * there are more than one argument. In that case, we got multiple indices and can forward</span></div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> <span class=\"comment\">// to the general machine.</span></div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> <span class=\"comment\">// * the first argument is not a valid flat index, i.e. either a std::size_t or an index_constant.</span></div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"comment\">// The argument thus has to be some kind of TreePath instance that we can also pass to the</span></div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"comment\">// generic machine.</span></div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> <span class=\"comment\">// The above SFINAE logic works, but there is still a problem with the return type deduction.</span></div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"comment\">// We have to do a lazy lookup of the return type after SFINAE has succeeded, otherwise the return</span></div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> <span class=\"comment\">// type deduction will trigger the infinite recursion.</span></div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"foldopen\" id=\"foldopen00266\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\"> 266</a></span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\">child</a> (Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (I0 i0, I... i)</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> {</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> );</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> </div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"foldopen\" id=\"foldopen00286\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\"> 286</a></span> <span class=\"keyword\">const</span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\">child</a> (Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (I0 i0, I... i) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> {</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> );</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> </div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> </div>\n <div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\"> 316</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\">post</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"foldopen\" id=\"foldopen00315\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\"> 315</a></span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> ()</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> {}</div>\n+</div>\n <div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\"> 326</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\">leaf</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> u;}</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> </div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\"> 336</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\">beforeChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"foldopen\" id=\"foldopen00319\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\"> 319</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\">PowerNode</a> (<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>& children)</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> : _children(children)</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00324\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\"> 324</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\">PowerNode</a> (T& t, <span class=\"keywordtype\">bool</span> distinct_objects = <span class=\"keyword\">true</span>)</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> <span class=\"keywordflow\">if</span> (distinct_objects)</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> {</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">for</span> (<span class=\"keyword\">typename</span> NodeStorage::iterator it = _children.begin(); it != _children.end(); ++it)</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> *it = std::make_shared<T>(t);</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> }</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> {</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> std::shared_ptr<T> sp = stackobject_to_shared_ptr(t);</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> std::fill(_children.begin(),_children.end(),sp);</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> }</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> </div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\"> 346</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\">afterChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> </div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> } <span class=\"comment\">// namespace Experimental</span></div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> </div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00357\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01572.html\"> 357</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> {</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> </div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"comment\">// the little trick with the default template arguments</span></div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> <span class=\"comment\">// makes the class usable for both single-tree visitors</span></div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> <span class=\"comment\">// and visitors for pairs of trees</span></div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node1,</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> <span class=\"keyword\">typename</span> Child1,</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span> <span class=\"keyword\">typename</span> Node2,</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">typename</span> Child2 = void,</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">typename</span> TreePath = <span class=\"keywordtype\">void</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00369\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01576.html\"> 369</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01576.html\">VisitChild</a></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> {</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\"> 372</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\">value</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00383\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01580.html\"> 383</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> {</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> </div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> <span class=\"comment\">// the little trick with the default template arguments</span></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> <span class=\"comment\">// makes the class usable for both single-tree visitors</span></div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> <span class=\"comment\">// and visitors for pairs of trees</span></div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node1,</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"keyword\">typename</span> Child1,</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> <span class=\"keyword\">typename</span> Node2,</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> <span class=\"keyword\">typename</span> Child2 = void,</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> <span class=\"keyword\">typename</span> TreePath = <span class=\"keywordtype\">void</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00395\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01584.html\"> 395</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01584.html\">VisitChild</a></div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> {</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\"> 398</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\">value</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\"> 400</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> </div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00411\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01588.html\"> 411</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> {</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\"> 414</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">TreePathType::fullyStatic</a>;</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> </div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00425\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01592.html\"> 425</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01592.html\">DynamicTraversal</a></div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> {</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\"> 428</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>;</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00432\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01596.html\"> 432</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01596.html\">TreeVisitor</a></div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00438\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01600.html\"> 438</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01600.html\">DirectChildrenVisitor</a></div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00444\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01604.html\"> 444</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01604.html\">TreePairVisitor</a></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00450\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01608.html\"> 450</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01608.html\">DirectChildrenPairVisitor</a></div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"> 454</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00455\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html\"> 455</a></span> <span class=\"keyword\">namespace </span>Experimental::Info {</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\"> 456</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html\"> 457</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a></div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"> 458</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\"> 459</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\"> 460</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> {</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> Child, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> ChildIndex, <span class=\"keyword\">class</span> U></div>\n-<div class=\"foldopen\" id=\"foldopen00463\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#a951b73b10a172078636131da559989d2\"> 463</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01612.html#a951b73b10a172078636131da559989d2\">beforeChild</a>(Tree&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, U u)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"comment\">// in this case child index is an integral constant: forward u</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keywordflow\">return</span> u;</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> </div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> Child, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n-<div class=\"foldopen\" id=\"foldopen00469\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\"> 469</a></span> std::size_t <a class=\"code hl_function\" href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\">beforeChild</a>(Tree&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, std::size_t <span class=\"comment\">/*childIndex*/</span>, U u)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"comment\">// in this case child index is a run-time index: cast accumulated u to std::size_t</span></div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> <span class=\"keywordflow\">return</span> std::size_t{u};</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\"> 473</span> </div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n-<div class=\"foldopen\" id=\"foldopen00475\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\"> 475</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\">leaf</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"> 476</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\"> 477</span> <span class=\"keywordflow\">return</span> Hybrid::plus(u,Dune::Indices::_1);</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"> 478</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"> 479</span> </div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\"> 480</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\"> 481</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00482\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01616.html\"> 482</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01616.html\">NodeCounterVisitor</a></div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\"> 483</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a></div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"> 484</span> {</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n-<div class=\"foldopen\" id=\"foldopen00486\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\"> 486</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\">pre</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> <span class=\"keywordflow\">return</span> Hybrid::plus(u,Indices::_1);</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00491\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01620.html\"> 491</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a></div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\"> 492</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"> 494</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"> 495</span> {</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\"> 496</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n-<div class=\"foldopen\" id=\"foldopen00497\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\"> 497</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\">leaf</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"> 498</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> <span class=\"keyword\">auto</span> path_size = index_constant<<a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(TreePath{})>{};</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"> 500</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a> = Hybrid::plus(path_size,Indices::_1);</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"> 501</span> <span class=\"keywordflow\">return</span> Hybrid::max(<a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>,u);</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\"> 503</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> </div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> <span class=\"comment\">// result is alwayas an integral constant</span></div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n-<div class=\"foldopen\" id=\"foldopen00508\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\"> 508</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> {</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"> 510</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a>{},Indices::_0);</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"> 512</span> </div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> <span class=\"comment\">// return types is std::integral_constant.</span></div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n-<div class=\"foldopen\" id=\"foldopen00516\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\"> 516</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>()</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> {</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(std::declval<Tree>(),<a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a>{},Indices::_0)){};</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> </div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> <span class=\"comment\">// if Tree is dynamic, return type is std::size_t, otherwise std::integral_constant.</span></div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n-<div class=\"foldopen\" id=\"foldopen00524\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\"> 524</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\"> 525</span> {</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01616.html\">NodeCounterVisitor</a>{},Indices::_0);</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"> 527</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> </div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"> 530</span> <span class=\"comment\">// if Tree is dynamic, return type is std::size_t, otherwise std::integral_constant.</span></div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"> 531</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n-<div class=\"foldopen\" id=\"foldopen00532\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\"> 532</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"> 533</span> {</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"> 534</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a>{},Dune::Indices::_0);</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"> 535</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\"> 539</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">isDynamic</a> = std::is_same<std::size_t, decltype(leafCount(std::declval<Tree>()))>{};</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\"> 540</span> </div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"> 541</span> } <span class=\"comment\">// namespace Experimental::Info</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> </div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> </div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\"> 545</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\"> 547</span> </div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"> 548</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_VISITOR_HH</span></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00341\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a28b85a6932b997818d51b6227a792116\"> 341</a></span> <a class=\"code hl_function\" href=\"a01288.html#a28b85a6932b997818d51b6227a792116\">PowerNode</a>(T& t1, T& t2, ...)</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> </div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> </div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> std::enable_if_t<</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> std::conjunction<std::is_same<ChildType, std::decay_t<Children>>...>::value</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> ,<span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> (Children&&... children)</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> {</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> <span class=\"keyword\">static_assert</span>(<a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() == <span class=\"keyword\">sizeof</span>...(Children), <span class=\"stringliteral\">"PowerNode constructor is called with incorrect number of children"</span>);</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> _children = <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>{convert_arg(std::forward<Children>(children))...};</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> }</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> </div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> std::enable_if_t<</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> std::conjunction<std::is_same<ChildType, Children>...>::value</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> ,<span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> (std::shared_ptr<Children>... children)</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> {</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> <span class=\"keyword\">static_assert</span>(<a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() == <span class=\"keyword\">sizeof</span>...(Children), <span class=\"stringliteral\">"PowerNode constructor is called with incorrect number of children"</span>);</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> _children = <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>{children...};</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> }</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> </div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> </div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a> _children;</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> </div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERNODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00008_html\"><div class=\"ttname\"><a href=\"a00008.html\">childextraction.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00014_html\"><div class=\"ttname\"><a href=\"a00014.html\">typetraits.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00099_html_a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><div class=\"ttname\"><a href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">Dune::TypeTree::Experimental::hybridApplyToTree</a></div><div class=\"ttdeci\">auto hybridApplyToTree(Tree &&tree, Visitor &&visitor, Init &&init)</div><div class=\"ttdoc\">Apply hybrid visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:701</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a></div><div class=\"ttdeci\">@ fullyStatic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a104fe96df2b6e08ed3f71b6aff53fb5c\"><div class=\"ttname\"><a href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">Dune::TypeTree::Experimental::Info::isDynamic</a></div><div class=\"ttdeci\">constexpr bool isDynamic</div><div class=\"ttdoc\">true if any of the nodes in the tree only has dynamic degree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:539</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a53a6ba5f914d4da3ba5ff80408f21163\"><div class=\"ttname\"><a href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a></div><div class=\"ttdeci\">auto leafCount(const Tree &tree)</div><div class=\"ttdoc\">The number of leaf nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:532</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a5785c6c18fde92f5bff32c3096f8a00d\"><div class=\"ttname\"><a href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a></div><div class=\"ttdeci\">auto nodeCount(const Tree &tree)</div><div class=\"ttdoc\">The total number of nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:524</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a769c643bdde5a9a73adf45d96fec1d6b\"><div class=\"ttname\"><a href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">Dune::TypeTree::Experimental::Info::depth</a></div><div class=\"ttdeci\">constexpr auto depth()</div><div class=\"ttdoc\">The depth of the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:516</div></div>\n-<div class=\"ttc\" id=\"aa01560_html\"><div class=\"ttname\"><a href=\"a01560.html\">Dune::TypeTree::DefaultVisitor</a></div><div class=\"ttdoc\">Visitor interface and base class for TypeTree visitors.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_a29109fa150fe803da9ef96e5545cc34b\"><div class=\"ttname\"><a href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\">Dune::TypeTree::DefaultVisitor::in</a></div><div class=\"ttdeci\">void in(T &&, TreePath) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:72</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_a4c3044017e14fba2f79a4985ab051582\"><div class=\"ttname\"><a href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\">Dune::TypeTree::DefaultVisitor::afterChild</a></div><div class=\"ttdeci\">void afterChild(T &&, Child &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:122</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_a6b183fe30f42681326f449b92adee39b\"><div class=\"ttname\"><a href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\">Dune::TypeTree::DefaultVisitor::beforeChild</a></div><div class=\"ttdeci\">void beforeChild(T &&, Child &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:107</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_a7fb17e9b2662028132c2ddd44b4e5177\"><div class=\"ttname\"><a href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\">Dune::TypeTree::DefaultVisitor::post</a></div><div class=\"ttdeci\">void post(T &&, TreePath) const</div><div class=\"ttdoc\">Method for postfix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_a847720b94c34dc3d367d0b9e70c75aca\"><div class=\"ttname\"><a href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\">Dune::TypeTree::DefaultVisitor::leaf</a></div><div class=\"ttdeci\">void leaf(T &&, TreePath) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:93</div></div>\n-<div class=\"ttc\" id=\"aa01560_html_afc26a0c206c4d9a5721f13c76619b593\"><div class=\"ttname\"><a href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\">Dune::TypeTree::DefaultVisitor::pre</a></div><div class=\"ttdeci\">void pre(T &&, TreePath) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:60</div></div>\n-<div class=\"ttc\" id=\"aa01564_html\"><div class=\"ttname\"><a href=\"a01564.html\">Dune::TypeTree::DefaultPairVisitor</a></div><div class=\"ttdoc\">Visitor interface and base class for visitors of pairs of TypeTrees.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:164</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_a16eb112aa01f1f5075afc05bcd1504e3\"><div class=\"ttname\"><a href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\">Dune::TypeTree::DefaultPairVisitor::leaf</a></div><div class=\"ttdeci\">void leaf(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:216</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_a2c63dc52133fc5dcca0630524b104629\"><div class=\"ttname\"><a href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\">Dune::TypeTree::DefaultPairVisitor::beforeChild</a></div><div class=\"ttdeci\">void beforeChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:232</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_aa16263024c675121a6d4be9a405e7569\"><div class=\"ttname\"><a href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\">Dune::TypeTree::DefaultPairVisitor::pre</a></div><div class=\"ttdeci\">void pre(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:176</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_ac0a9bb10da4e4e565deb11a1f2cd1ffd\"><div class=\"ttname\"><a href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\">Dune::TypeTree::DefaultPairVisitor::post</a></div><div class=\"ttdeci\">void post(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for postfix traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:201</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_acd5a90cd29a33f8b00a32a14e8e6d84a\"><div class=\"ttname\"><a href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\">Dune::TypeTree::DefaultPairVisitor::in</a></div><div class=\"ttdeci\">void in(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:189</div></div>\n-<div class=\"ttc\" id=\"aa01564_html_ae58d070f366db82a828982ee6800def1\"><div class=\"ttname\"><a href=\"a01564.html#ae58d070f366db82a828982ee6800def1\">Dune::TypeTree::DefaultPairVisitor::afterChild</a></div><div class=\"ttdeci\">void afterChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:248</div></div>\n-<div class=\"ttc\" id=\"aa01568_html\"><div class=\"ttname\"><a href=\"a01568.html\">Dune::TypeTree::Experimental::DefaultHybridVisitor</a></div><div class=\"ttdoc\">Hybrid visitor interface and base class for TypeTree hybrid visitors.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:286</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_a3ad8af765da2b8bfbba2ba17dc0a9f35\"><div class=\"ttname\"><a href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\">Dune::TypeTree::Experimental::DefaultHybridVisitor::post</a></div><div class=\"ttdeci\">auto post(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for postfix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:316</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_a858013308d36f3a5167bc87685c8f831\"><div class=\"ttname\"><a href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\">Dune::TypeTree::Experimental::DefaultHybridVisitor::pre</a></div><div class=\"ttdeci\">auto pre(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:296</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_a8c9825573648a003ec5ded66a0d3924d\"><div class=\"ttname\"><a href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\">Dune::TypeTree::Experimental::DefaultHybridVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:326</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_a9b8fa4073c306094f0029b7ff43845fa\"><div class=\"ttname\"><a href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\">Dune::TypeTree::Experimental::DefaultHybridVisitor::afterChild</a></div><div class=\"ttdeci\">auto afterChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:346</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_ab492601f1e0118e6d9e81f704a8fb0f4\"><div class=\"ttname\"><a href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\">Dune::TypeTree::Experimental::DefaultHybridVisitor::in</a></div><div class=\"ttdeci\">auto in(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:306</div></div>\n-<div class=\"ttc\" id=\"aa01568_html_ad702d8a561daf106b779de7f66dea829\"><div class=\"ttname\"><a href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\">Dune::TypeTree::Experimental::DefaultHybridVisitor::beforeChild</a></div><div class=\"ttdeci\">auto beforeChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:336</div></div>\n-<div class=\"ttc\" id=\"aa01572_html\"><div class=\"ttname\"><a href=\"a01572.html\">Dune::TypeTree::VisitDirectChildren</a></div><div class=\"ttdoc\">Mixin base class for visitors that only want to visit the direct children of a node.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:358</div></div>\n-<div class=\"ttc\" id=\"aa01576_html\"><div class=\"ttname\"><a href=\"a01576.html\">Dune::TypeTree::VisitDirectChildren::VisitChild</a></div><div class=\"ttdoc\">Template struct for determining whether or not to visit a given child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:370</div></div>\n-<div class=\"ttc\" id=\"aa01576_html_a0a8eca77f9c305ce340a43776408de70\"><div class=\"ttname\"><a href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\">Dune::TypeTree::VisitDirectChildren::VisitChild::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">Do not visit any child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:372</div></div>\n-<div class=\"ttc\" id=\"aa01580_html\"><div class=\"ttname\"><a href=\"a01580.html\">Dune::TypeTree::VisitTree</a></div><div class=\"ttdoc\">Mixin base class for visitors that want to visit the complete tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:384</div></div>\n-<div class=\"ttc\" id=\"aa01584_html\"><div class=\"ttname\"><a href=\"a01584.html\">Dune::TypeTree::VisitTree::VisitChild</a></div><div class=\"ttdoc\">Template struct for determining whether or not to visit a given child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:396</div></div>\n-<div class=\"ttc\" id=\"aa01584_html_a133b8eac4c63e87699e8aeab25f59e79\"><div class=\"ttname\"><a href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\">Dune::TypeTree::VisitTree::VisitChild::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">Visit any child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:398</div></div>\n-<div class=\"ttc\" id=\"aa01588_html\"><div class=\"ttname\"><a href=\"a01588.html\">Dune::TypeTree::StaticTraversal</a></div><div class=\"ttdoc\">Mixin base class for visitors that require a static TreePath during traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:412</div></div>\n-<div class=\"ttc\" id=\"aa01588_html_af5b5b93a9a70f08554680cabd44a83e3\"><div class=\"ttname\"><a href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\">Dune::TypeTree::StaticTraversal::treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdoc\">Use the static tree traversal algorithm.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:414</div></div>\n-<div class=\"ttc\" id=\"aa01592_html\"><div class=\"ttname\"><a href=\"a01592.html\">Dune::TypeTree::DynamicTraversal</a></div><div class=\"ttdoc\">Mixin base class for visitors that only need a dynamic TreePath during traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:426</div></div>\n-<div class=\"ttc\" id=\"aa01592_html_a63dbdad07a75c2f9c92a71333e14515c\"><div class=\"ttname\"><a href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\">Dune::TypeTree::DynamicTraversal::treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdoc\">Use the dynamic tree traversal algorithm.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:428</div></div>\n-<div class=\"ttc\" id=\"aa01596_html\"><div class=\"ttname\"><a href=\"a01596.html\">Dune::TypeTree::TreeVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the entire tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:435</div></div>\n-<div class=\"ttc\" id=\"aa01600_html\"><div class=\"ttname\"><a href=\"a01600.html\">Dune::TypeTree::DirectChildrenVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the direct children of a node.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:441</div></div>\n-<div class=\"ttc\" id=\"aa01604_html\"><div class=\"ttname\"><a href=\"a01604.html\">Dune::TypeTree::TreePairVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting an entire tree pair.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:447</div></div>\n-<div class=\"ttc\" id=\"aa01608_html\"><div class=\"ttname\"><a href=\"a01608.html\">Dune::TypeTree::DirectChildrenPairVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the direct children of a node pair.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:453</div></div>\n-<div class=\"ttc\" id=\"aa01612_html\"><div class=\"ttname\"><a href=\"a01612.html\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:461</div></div>\n-<div class=\"ttc\" id=\"aa01612_html_a7ae0f477dbe212c32cdde6ef9d16410d\"><div class=\"ttname\"><a href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:475</div></div>\n-<div class=\"ttc\" id=\"aa01612_html_a951b73b10a172078636131da559989d2\"><div class=\"ttname\"><a href=\"a01612.html#a951b73b10a172078636131da559989d2\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::beforeChild</a></div><div class=\"ttdeci\">auto beforeChild(Tree &&, Child &&, TreePath, ChildIndex, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:463</div></div>\n-<div class=\"ttc\" id=\"aa01612_html_aff0b0e9c68760bab3becf68c3abd2136\"><div class=\"ttname\"><a href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::beforeChild</a></div><div class=\"ttdeci\">std::size_t beforeChild(Tree &&, Child &&, TreePath, std::size_t, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:469</div></div>\n-<div class=\"ttc\" id=\"aa01616_html\"><div class=\"ttname\"><a href=\"a01616.html\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:484</div></div>\n-<div class=\"ttc\" id=\"aa01616_html_ad96b7d51f95324ef4fa8b6a5e9a77779\"><div class=\"ttname\"><a href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor::pre</a></div><div class=\"ttdeci\">auto pre(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:486</div></div>\n-<div class=\"ttc\" id=\"aa01620_html\"><div class=\"ttname\"><a href=\"a01620.html\">Dune::TypeTree::Experimental::Info::DepthVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:495</div></div>\n-<div class=\"ttc\" id=\"aa01620_html_aa4e91c909f8083203b46c6fe18c4c1a8\"><div class=\"ttname\"><a href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\">Dune::TypeTree::Experimental::Info::DepthVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:497</div></div>\n+<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n+<div class=\"ttc\" id=\"aa01288_html\"><div class=\"ttname\"><a href=\"a01288.html\">Dune::TypeTree::PowerNode</a></div><div class=\"ttdoc\">Collect k instances of type T within a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:52</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a01c54073ccb06fbf74b4387fb3bd8ce0\"><div class=\"ttname\"><a href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(T &t, index_constant< i >={})</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:143</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a0440e91e7ff5ff95f75b4e5bf48efcdc\"><div class=\"ttname\"><a href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">T & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:175</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a14e42fd1fd8a7197eb89f5a1e462912c\"><div class=\"ttname\"><a href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const T & child(index_constant< i >={}) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a177c68f780281cea78020f3085aac719\"><div class=\"ttname\"><a href=\"a01288.html#a177c68f780281cea78020f3085aac719\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::shared_ptr< T > st, index_constant< i >={})</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:159</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a1b45c11ce23d0b423db5f8a13a63beb2\"><div class=\"ttname\"><a href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< T > childStorage(index_constant< i >={})</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:124</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a28b85a6932b997818d51b6227a792116\"><div class=\"ttname\"><a href=\"a01288.html#a28b85a6932b997818d51b6227a792116\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(T &t1, T &t2,...)</div><div class=\"ttdoc\">Initialize all children with the passed-in objects.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:341</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a35da572efe78f590954295f0bda96c1e\"><div class=\"ttname\"><a href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\">Dune::TypeTree::PowerNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:232</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a3bb2aeb17ecf20beb0818e30670e2d0c\"><div class=\"ttname\"><a href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">Dune::TypeTree::PowerNode::NodeStorage</a></div><div class=\"ttdeci\">std::array< std::shared_ptr< T >, k > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:77</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a4aea378b74e815e059cb764570a3bb3a\"><div class=\"ttname\"><a href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const T > childStorage(index_constant< i >={}) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:135</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a6880435ea965546474e0c5e9e6a09ebe\"><div class=\"ttname\"><a href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(T &t, bool distinct_objects=true)</div><div class=\"ttdoc\">Initialize all children with copies of a storage object constructed from the parameter t.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:324</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a6c3688a559a975166adfb990fe6de522\"><div class=\"ttname\"><a href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\">Dune::TypeTree::PowerNode::NodeTag</a></div><div class=\"ttdeci\">PowerNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a PowerNode.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:71</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a6cf89c78972c89285d4e0599191dfc52\"><div class=\"ttname\"><a href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const T & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:185</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a7896358bf0fec62631a5da40338157d9\"><div class=\"ttname\"><a href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">Dune::TypeTree::PowerNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:65</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a7fa2fea31364fcc94fabedeb6ce2cde5\"><div class=\"ttname\"><a href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const T > childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:205</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a906b42c59829611461f84f484c00e10b\"><div class=\"ttname\"><a href=\"a01288.html#a906b42c59829611461f84f484c00e10b\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, std::shared_ptr< T > st)</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:226</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_a909808b4131a00efefcf640df313504f\"><div class=\"ttname\"><a href=\"a01288.html#a909808b4131a00efefcf640df313504f\">Dune::TypeTree::PowerNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:63</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aa1b69a455bafdbb8b040bbe9071614cd\"><div class=\"ttname\"><a href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\">Dune::TypeTree::PowerNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aaa6652060b89f583524e5fdac39d75e9\"><div class=\"ttname\"><a href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\">Dune::TypeTree::PowerNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:60</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aab21ac4bd1e1a6e7cfa81c00e5b368bb\"><div class=\"ttname\"><a href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(const NodeStorage &children)</div><div class=\"ttdoc\">Initialize the PowerNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:319</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aacce4d46c79116347ef62c8f59235144\"><div class=\"ttname\"><a href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\">Dune::TypeTree::PowerNode::ChildType</a></div><div class=\"ttdeci\">T ChildType</div><div class=\"ttdoc\">The type of each child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:74</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aae8dcdf40a53f0fb1b7ba77219d3bc58\"><div class=\"ttname\"><a href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">T & child(index_constant< i >={})</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:102</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_abdad58173ebc7dd2202682b448837eb7\"><div class=\"ttname\"><a href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:266</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_ac3c28a1c5cef5e0e677d3cf78e8a870d\"><div class=\"ttname\"><a href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, T &&t)</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:219</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_ad47d5280b3f68a38e4e7f83cba61ed9e\"><div class=\"ttname\"><a href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(T &&t, index_constant< i >={})</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:151</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_ae59c7d90f33f41b786fce61c519a6e2d\"><div class=\"ttname\"><a href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:315</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aea3ff748f7ea3c66b0adff2e73a17311\"><div class=\"ttname\"><a href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:286</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_aeaf6c1f51f1a9313ad69f86a41bf1764\"><div class=\"ttname\"><a href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, T &t)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:212</div></div>\n+<div class=\"ttc\" id=\"aa01288_html_af5792eced4832509032040dfd86e8c28\"><div class=\"ttname\"><a href=\"a01288.html#af5792eced4832509032040dfd86e8c28\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< T > childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:195</div></div>\n+<div class=\"ttc\" id=\"aa01292_html\"><div class=\"ttname\"><a href=\"a01292.html\">Dune::TypeTree::PowerNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa01292_html_a010f3af06b3c2eddd61d91044f1605bb\"><div class=\"ttname\"><a href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\">Dune::TypeTree::PowerNode::Child::type</a></div><div class=\"ttdeci\">T type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:91</div></div>\n+<div class=\"ttc\" id=\"aa01292_html_a36478705f252b4739ce9e2a63fa7a43a\"><div class=\"ttname\"><a href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\">Dune::TypeTree::PowerNode::Child::Type</a></div><div class=\"ttdeci\">T Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:88</div></div>\n+<div class=\"ttc\" id=\"aa01552_html\"><div class=\"ttname\"><a href=\"a01552.html\">Dune::TypeTree::IsTreePath</a></div><div class=\"ttdoc\">Check if type represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:184</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,481 +1,463 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-visitor.hh\n+powernode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_VISITOR_HH\n-7#define DUNE_TYPETREE_VISITOR_HH\n+6#ifndef DUNE_TYPETREE_POWERNODE_HH\n+7#define DUNE_TYPETREE_POWERNODE_HH\n 8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-10#include <dune/common/hybridutilities.hh>\n-11\n-12namespace _\bD_\bu_\bn_\be {\n-13 namespace TypeTree {\n-14\n+9#include <cassert>\n+10#include <array>\n+11#include <memory>\n+12#include <type_traits>\n+13\n+14#include <dune/common/typetraits.hh>\n+15#include <dune/common/std/type_traits.hh>\n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n 21\n-_\b4_\b8 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-49 {\n-50\n-52\n-59 template<typename T, typename TreePath>\n-_\b6_\b0 void _\bp_\br_\be(T&&, TreePath) const {}\n+22namespace _\bD_\bu_\bn_\be {\n+23 namespace TypeTree {\n+24\n+31#ifndef DOXYGEN\n+32\n+34 template<typename PowerNode, typename T, std::size_t k>\n+35 struct AssertPowerNodeChildCount\n+36 : public std::enable_if<std::is_same<\n+37 typename PowerNode::ChildType,\n+38 T>::value &&\n+39 PowerNode::degree() == k,\n+40 T>\n+41 {};\n+42\n+43#endif\n+44\n+50 template<typename T, std::size_t k>\n+_\b5_\b1 class _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+52 {\n+53\n+54 public:\n+55\n+_\b5_\b7 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n+58\n+_\b6_\b0 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = true;\n 61\n-63\n-71 template<typename T, typename TreePath>\n-_\b7_\b2 void _\bi_\bn(T&&, TreePath) const {}\n-73\n+_\b6_\b3 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n+64\n+_\b6_\b5 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n+66 {\n+67 return std::integral_constant<std::size_t,k>{};\n+68 }\n+69\n+_\b7_\b1 typedef _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+72\n+_\b7_\b4 typedef T _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n 75\n-82 template<typename T, typename TreePath>\n-_\b8_\b3 void _\bp_\bo_\bs_\bt(T&&, TreePath) const {}\n+_\b7_\b7 typedef std::array<std::shared_ptr<T>,k> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+78\n+79\n+81 template<std::size_t i>\n+_\b8_\b2 struct _\bC_\bh_\bi_\bl_\bd\n+83 {\n 84\n+85 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n 86\n-92 template<typename T, typename TreePath>\n-_\b9_\b3 void _\bl_\be_\ba_\bf(T&&, TreePath) const {}\n-94\n+_\b8_\b8 typedef T _\bT_\by_\bp_\be;\n+89\n+_\b9_\b1 typedef T _\bt_\by_\bp_\be;\n+92 };\n+93\n 96\n-106 template<typename T, typename Child, typename TreePath, typename\n-ChildIndex>\n-_\b1_\b0_\b7 void _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex) const {}\n-108\n-110\n-121 template<typename T, typename Child, typename TreePath, typename\n-ChildIndex>\n-_\b1_\b2_\b2 void _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex) const {}\n-123\n-124 };\n-125\n-126\n-128\n-_\b1_\b6_\b3 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-164 {\n-165\n+98\n+101 template<std::size_t i>\n+_\b1_\b0_\b2 T& _\bc_\bh_\bi_\bl_\bd (index_constant<i> = {})\n+103 {\n+104 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+105 return *_children[i];\n+106 }\n+107\n+109\n+112 template<std::size_t i>\n+_\b1_\b1_\b3 const T& _\bc_\bh_\bi_\bl_\bd (index_constant<i> = {}) const\n+114 {\n+115 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+116 return *_children[i];\n+117 }\n+118\n+120\n+123 template<std::size_t i>\n+_\b1_\b2_\b4 std::shared_ptr<T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<i> = {})\n+125 {\n+126 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+127 return _children[i];\n+128 }\n+129\n+131\n+134 template<std::size_t i>\n+_\b1_\b3_\b5 std::shared_ptr<const T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<i> = {}) const\n+136 {\n+137 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+138 return _children[i];\n+139 }\n+140\n+142 template<std::size_t i>\n+_\b1_\b4_\b3 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (T& t, index_constant<i> = {})\n+144 {\n+145 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+146 _children[i] = stackobject_to_shared_ptr(t);\n+147 }\n+148\n+150 template<std::size_t i>\n+_\b1_\b5_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (T&& t, index_constant<i> = {})\n+152 {\n+153 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+154 _children[i] = convert_arg(std::move(t));\n+155 }\n+156\n+158 template<std::size_t i>\n+_\b1_\b5_\b9 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::shared_ptr<T> st, index_constant<i> = {})\n+160 {\n+161 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+162 _children[i] = std::move(st);\n+163 }\n+164\n+166\n 167\n-175 template<typename T1, typename T2, typename TreePath>\n-_\b1_\b7_\b6 void _\bp_\br_\be(T1&&, T2&&, TreePath) const {}\n-177\n-179\n-188 template<typename T1, typename T2, typename TreePath>\n-_\b1_\b8_\b9 void _\bi_\bn(T1&&, T2&&, TreePath) const {}\n+170\n+172\n+_\b1_\b7_\b5 T& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n+176 {\n+177 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+178 return *_children[i];\n+179 }\n+180\n+182\n+_\b1_\b8_\b5 const T& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n+186 {\n+187 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+188 return *_children[i];\n+189 }\n 190\n 192\n-200 template<typename T1, typename T2, typename TreePath>\n-_\b2_\b0_\b1 void _\bp_\bo_\bs_\bt(T1&&, T2&&, TreePath) const {}\n+_\b1_\b9_\b5 std::shared_ptr<T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n+196 {\n+197 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+198 return _children[i];\n+199 }\n+200\n 202\n-204\n-215 template<typename T1, typename T2, typename TreePath>\n-_\b2_\b1_\b6 void _\bl_\be_\ba_\bf(T1&&, T2&&, TreePath) const {}\n+_\b2_\b0_\b5 std::shared_ptr<const T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n+206 {\n+207 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+208 return _children[i];\n+209 }\n+210\n+_\b2_\b1_\b2 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, T& t)\n+213 {\n+214 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+215 _children[i] = stackobject_to_shared_ptr(t);\n+216 }\n 217\n-219\n-231 template<typename T1, typename Child1, typename T2, typename Child2,\n-typename TreePath, typename ChildIndex>\n-_\b2_\b3_\b2 void _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)\n-const {}\n-233\n-235\n-247 template<typename T1, typename Child1, typename T2, typename Child2,\n-typename TreePath, typename ChildIndex>\n-_\b2_\b4_\b8 void _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex) const\n-{}\n-249\n-250 };\n-251\n-252\n-253 namespace Experimental {\n-254\n-_\b2_\b8_\b5 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-286 {\n-287\n-295 template<typename T, typename TreePath, typename U>\n-_\b2_\b9_\b6 auto _\bp_\br_\be(T&&, TreePath, const U& u) const { return u;}\n-297\n-305 template<typename T, typename TreePath, typename U>\n-_\b3_\b0_\b6 auto _\bi_\bn(T&&, TreePath, const U& u) const {return u;}\n+_\b2_\b1_\b9 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, T&& t)\n+220 {\n+221 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+222 _children[i] = convert_arg(std::move(t));\n+223 }\n+224\n+_\b2_\b2_\b6 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, std::shared_ptr<T> st)\n+227 {\n+228 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+229 _children[i] = std::move(st);\n+230 }\n+231\n+_\b2_\b3_\b2 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+233 {\n+234 return _children;\n+235 }\n+236\n+238\n+241\n+242 // The following two methods require a little bit of SFINAE trickery to\n+work correctly:\n+243 // We have to make sure that they don't shadow the methods for direct child\n+access because\n+244 // those get called by the generic child() machinery. If that machinery\n+picks up the methods\n+245 // defined below, we have an infinite recursion.\n+246 // So the methods make sure that either\n+247 //\n+248 // * there are more than one argument. In that case, we got multiple\n+indices and can forward\n+249 // to the general machine.\n+250 //\n+251 // * the first argument is not a valid flat index, i.e. either a std::\n+size_t or an index_constant.\n+252 // The argument thus has to be some kind of TreePath instance that we can\n+also pass to the\n+253 // generic machine.\n+254 //\n+255 // The above SFINAE logic works, but there is still a problem with the\n+return type deduction.\n+256 // We have to do a lazy lookup of the return type after SFINAE has\n+succeeded, otherwise the return\n+257 // type deduction will trigger the infinite recursion.\n+258\n+260\n+264#ifdef DOXYGEN\n+265 template<typename... Indices>\n+_\b2_\b6_\b6 ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n+267#else\n+268 template<typename I0, typename... I,\n+269 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n+270 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i)\n+271#endif\n+272 {\n+273 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n+274 \"You cannot use the member function child() with an empty TreePath, use the\n+freestanding version child(node,treePath) instead.\"\n+275 );\n+276 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n+277 }\n+278\n+280\n+284#ifdef DOXYGEN\n+285 template<typename... Indices>\n+_\b2_\b8_\b6 const ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n+287#else\n+288 template<typename I0, typename... I,\n+289 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n+290 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i) const\n+291#endif\n+292 {\n+293 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n+294 \"You cannot use the member function child() with an empty TreePath, use the\n+freestanding version child(node,treePath) instead.\"\n+295 );\n+296 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n+297 }\n+298\n+300\n+303\n+304 protected:\n+305\n 307\n-315 template<typename T, typename TreePath, typename U>\n-_\b3_\b1_\b6 auto _\bp_\bo_\bs_\bt(T&&, TreePath, const U& u) const {return u;}\n+_\b3_\b1_\b5 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be ()\n+316 {}\n 317\n-325 template<typename T, typename TreePath, typename U>\n-_\b3_\b2_\b6 auto _\bl_\be_\ba_\bf(T&&, TreePath, const U& u) const { return u;}\n-327\n-335 template<typename T, typename Child, typename TreePath, typename\n-ChildIndex, typename U>\n-_\b3_\b3_\b6 auto _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, const U& u) const\n-{return u;}\n+_\b3_\b1_\b9 explicit _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& children)\n+320 : _children(children)\n+321 {}\n+322\n+_\b3_\b2_\b4 explicit _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (T& t, bool distinct_objects = true)\n+325 {\n+326 if (distinct_objects)\n+327 {\n+328 for (typename NodeStorage::iterator it = _children.begin(); it !=\n+_children.end(); ++it)\n+329 *it = std::make_shared<T>(t);\n+330 }\n+331 else\n+332 {\n+333 std::shared_ptr<T> sp = stackobject_to_shared_ptr(t);\n+334 std::fill(_children.begin(),_children.end(),sp);\n+335 }\n+336 }\n 337\n-345 template<typename T, typename Child, typename TreePath, typename\n-ChildIndex, typename U>\n-_\b3_\b4_\b6 auto _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, const U& u) const\n-{return u;}\n-347\n-348 };\n-349 } // namespace Experimental\n-350\n-352\n-_\b3_\b5_\b7 struct _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-358 {\n-359\n-360 // the little trick with the default template arguments\n-361 // makes the class usable for both single-tree visitors\n-362 // and visitors for pairs of trees\n-364 template<typename Node1,\n-365 typename Child1,\n-366 typename Node2,\n-367 typename Child2 = void,\n-368 typename TreePath = void>\n-_\b3_\b6_\b9 struct _\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n-370 {\n-_\b3_\b7_\b2 static const bool _\bv_\ba_\bl_\bu_\be = false;\n-373 };\n-374\n-375 };\n-376\n-377\n-379\n-_\b3_\b8_\b3 struct _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-384 {\n-385\n-386 // the little trick with the default template arguments\n-387 // makes the class usable for both single-tree visitors\n-388 // and visitors for pairs of trees\n-390 template<typename Node1,\n-391 typename Child1,\n-392 typename Node2,\n-393 typename Child2 = void,\n-394 typename TreePath = void>\n-_\b3_\b9_\b5 struct _\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n-396 {\n-_\b3_\b9_\b8 static const bool _\bv_\ba_\bl_\bu_\be = true;\n-399 };\n-400\n-401 };\n-402\n-404\n-_\b4_\b1_\b1 struct _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-412 {\n-_\b4_\b1_\b4 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc;\n-415 };\n-416\n-418\n-_\b4_\b2_\b5 struct _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-426 {\n-_\b4_\b2_\b8 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc;\n-429 };\n-430\n-_\b4_\b3_\b2 struct _\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-433 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-434 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-435 {};\n-436\n-_\b4_\b3_\b8 struct _\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-439 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-440 , public _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-441 {};\n-442\n-_\b4_\b4_\b4 struct _\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-445 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-446 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-447 {};\n-448\n-_\b4_\b5_\b0 struct _\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-451 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-452 , public _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-453 {};\n-454\n-_\b4_\b5_\b5 namespace Experimental::Info {\n-456\n-_\b4_\b5_\b7 struct _\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-458 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-459 , public _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-460 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-461 {\n-462 template<class Tree, class Child, class TreePath, class ChildIndex, class\n-U>\n-_\b4_\b6_\b3 auto _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(Tree&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, U u) const {\n-464 // in this case child index is an integral constant: forward u\n-465 return u;\n-466 }\n-467\n-468 template<class Tree, class Child, class TreePath, class U>\n-_\b4_\b6_\b9 std::size_t _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(Tree&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, std::size_t /\n-*childIndex*/, U u) const {\n-470 // in this case child index is a run-time index: cast accumulated u to\n-std::size_t\n-471 return std::size_t{u};\n-472 }\n-473\n-474 template<class Tree, class TreePath, class U>\n-_\b4_\b7_\b5 auto _\bl_\be_\ba_\bf(Tree&&, TreePath, U u) const\n-476 {\n-477 return Hybrid::plus(u,Dune::Indices::_1);\n-478 }\n-479\n-480 };\n-481\n-_\b4_\b8_\b2 struct _\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-483 : public _\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-484 {\n-485 template<typename Tree, typename TreePath, typename U>\n-_\b4_\b8_\b6 auto _\bp_\br_\be(Tree&&, TreePath, U u) const {\n-487 return Hybrid::plus(u,Indices::_1);\n-488 }\n-489 };\n-490\n-_\b4_\b9_\b1 struct _\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-492 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-493 , public _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-494 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-495 {\n-496 template<class Tree, class TreePath, class U>\n-_\b4_\b9_\b7 auto _\bl_\be_\ba_\bf(Tree&&, TreePath, U u) const\n-498 {\n-499 auto path_size = index_constant<_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(TreePath{})>{};\n-500 auto _\bd_\be_\bp_\bt_\bh = Hybrid::plus(path_size,Indices::_1);\n-501 return Hybrid::max(_\bd_\be_\bp_\bt_\bh,u);\n-502 }\n-503 };\n-504\n-506 // result is alwayas an integral constant\n-507 template<typename Tree>\n-_\b5_\b0_\b8 auto _\bd_\be_\bp_\bt_\bh(const Tree& tree)\n-509 {\n-510 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Indices::_0);\n-511 }\n-512\n-514 // return types is std::integral_constant.\n-515 template<typename Tree>\n-_\b5_\b1_\b6 constexpr auto _\bd_\be_\bp_\bt_\bh()\n-517 {\n-518 return decltype(_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(std::declval<Tree>(),_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-{},Indices::_0)){};\n-519 }\n-520\n-522 // if Tree is dynamic, return type is std::size_t, otherwise std::\n-integral_constant.\n-523 template<typename Tree>\n-_\b5_\b2_\b4 auto _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt(const Tree& tree)\n-525 {\n-526 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Indices::_0);\n-527 }\n-528\n-530 // if Tree is dynamic, return type is std::size_t, otherwise std::\n-integral_constant.\n-531 template<typename Tree>\n-_\b5_\b3_\b2 auto _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt(const Tree& tree)\n-533 {\n-534 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Dune::Indices::_0);\n-535 }\n-536\n-538 template<typename Tree>\n-_\b5_\b3_\b9 constexpr bool _\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc = std::is_same<std::size_t, decltype(leafCount\n-(std::declval<Tree>()))>{};\n-540\n-541 } // namespace Experimental::Info\n-542\n-544\n-545 } // namespace TypeTree\n-546} //namespace Dune\n-547\n-548#endif // DUNE_TYPETREE_VISITOR_HH\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-typename impl::_Child< Node, indices... >::type Child\n-Template alias for the type of a child node given by a list of child indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n-constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n-Returns the size (number of components) of the given HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n+338#ifdef DOXYGEN\n+339\n+_\b3_\b4_\b1 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be(T& t1, T& t2, ...)\n+342 {}\n+343\n+344#else\n+345\n+346 template<typename... Children,\n+347 std::enable_if_t<\n+348 std::conjunction<std::is_same<ChildType, std::decay_t<Children>>...>::value\n+349 ,int> = 0>\n+350 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (Children&&... children)\n+351 {\n+352 static_assert(_\bd_\be_\bg_\br_\be_\be() == sizeof...(Children), \"PowerNode constructor is\n+called with incorrect number of children\");\n+353 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{convert_arg(std::forward<Children>(children))...};\n+354 }\n+355\n+356 template<typename... Children,\n+357 std::enable_if_t<\n+358 std::conjunction<std::is_same<ChildType, Children>...>::value\n+359 ,int> = 0>\n+360 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n+361 {\n+362 static_assert(_\bd_\be_\bg_\br_\be_\be() == sizeof...(Children), \"PowerNode constructor is\n+called with incorrect number of children\");\n+363 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{children...};\n+364 }\n+365\n+366#endif // DOXYGEN\n+367\n+369\n+370 private:\n+371 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n+372 };\n+373\n+375\n+376 } // namespace TypeTree\n+377} //namespace Dune\n+378\n+379#endif // DUNE_TYPETREE_POWERNODE_HH\n+_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n-auto hybridApplyToTree(Tree &&tree, Visitor &&visitor, Init &&init)\n-Apply hybrid visitor to TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:701\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc\n-@ fullyStatic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n-@ dynamic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc\n-constexpr bool isDynamic\n-true if any of the nodes in the tree only has dynamic degree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:539\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n-auto leafCount(const Tree &tree)\n-The number of leaf nodes in the Tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n-auto nodeCount(const Tree &tree)\n-The total number of nodes in the Tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:524\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n-constexpr auto depth()\n-The depth of the Tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:516\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Visitor interface and base class for TypeTree visitors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n-void in(T &&, TreePath) const\n-Method for infix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n-void afterChild(T &&, Child &&, TreePath, ChildIndex) const\n-Method for child-parent traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n-void beforeChild(T &&, Child &&, TreePath, ChildIndex) const\n-Method for parent-child traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n-void post(T &&, TreePath) const\n-Method for postfix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n-void leaf(T &&, TreePath) const\n-Method for leaf traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n-void pre(T &&, TreePath) const\n-Method for prefix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Visitor interface and base class for visitors of pairs of TypeTrees.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n-void leaf(T1 &&, T2 &&, TreePath) const\n-Method for leaf traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n-void beforeChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex)\n-const\n-Method for parent-child traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n-void pre(T1 &&, T2 &&, TreePath) const\n-Method for prefix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n-void post(T1 &&, T2 &&, TreePath) const\n-Method for postfix traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n-void in(T1 &&, T2 &&, TreePath) const\n-Method for infix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n-void afterChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const\n-Method for child-parent traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Hybrid visitor interface and base class for TypeTree hybrid visitors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:286\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n-auto post(T &&, TreePath, const U &u) const\n-Method for postfix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:316\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n-auto pre(T &&, TreePath, const U &u) const\n-Method for prefix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n-auto leaf(T &&, TreePath, const U &u) const\n-Method for leaf traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n-auto afterChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const\n-Method for child-parent traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n-auto in(T &&, TreePath, const U &u) const\n-Method for infix tree traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n-auto beforeChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const\n-Method for parent-child traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:336\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-Mixin base class for visitors that only want to visit the direct children of a\n-node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n-Template struct for determining whether or not to visit a given child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static const bool value\n-Do not visit any child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n-Mixin base class for visitors that want to visit the complete tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:384\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n-Template struct for determining whether or not to visit a given child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:396\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static const bool value\n-Visit any child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:398\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-Mixin base class for visitors that require a static TreePath during traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:412\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n-static const TreePathType::Type treePathType\n-Use the static tree traversal algorithm.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:414\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n-Mixin base class for visitors that only need a dynamic TreePath during\n-traversal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n-static const TreePathType::Type treePathType\n-Use the dynamic tree traversal algorithm.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:428\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Convenience base class for visiting the entire tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:435\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Convenience base class for visiting the direct children of a node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:441\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Convenience base class for visiting an entire tree pair.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:447\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-Convenience base class for visiting the direct children of a node pair.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:453\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:461\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n-auto leaf(Tree &&, TreePath, U u) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:475\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n-auto beforeChild(Tree &&, Child &&, TreePath, ChildIndex, U u) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:463\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n-std::size_t beforeChild(Tree &&, Child &&, TreePath, std::size_t, U u) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:469\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:484\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n-auto pre(Tree &&, TreePath, U u) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:486\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:495\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n-auto leaf(Tree &&, TreePath, U u) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:497\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+Collect k instances of type T within a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(T &t, index_constant< i >={})\n+Sets the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+T & child(std::size_t i)\n+Returns the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const T & child(index_constant< i >={}) const\n+Returns the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::shared_ptr< T > st, index_constant< i >={})\n+Sets the stored value representing the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< T > childStorage(index_constant< i >={})\n+Returns the storage of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+PowerNode(T &t1, T &t2,...)\n+Initialize all children with the passed-in objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:341\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+const NodeStorage & nodeStorage() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::array< std::shared_ptr< T >, k > NodeStorage\n+The type used for storing the children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< const T > childStorage(index_constant< i >={}) const\n+Returns the storage of the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+PowerNode(T &t, bool distinct_objects=true)\n+Initialize all children with copies of a storage object constructed from the\n+parameter t.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:324\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+PowerNodeTag NodeTag\n+The type tag that describes a PowerNode.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const T & child(std::size_t i) const\n+Returns the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static constexpr auto degree()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< const T > childStorage(std::size_t i) const\n+Returns the storage of the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, std::shared_ptr< T > st)\n+Sets the stored value representing the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a non composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Mark this class as non leaf in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+static const bool isPower\n+Mark this class as a power in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+PowerNode(const NodeStorage &children)\n+Initialize the PowerNode with a copy of the passed-in storage type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n+T ChildType\n+The type of each child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+T & child(index_constant< i >={})\n+Returns the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined & child(Indices... indices)\n+Returns the child given by the list of indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:266\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, T &&t)\n+Store the passed value in i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(T &&t, index_constant< i >={})\n+Store the passed value in i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+PowerNode()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:315\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const ImplementationDefined & child(Indices... indices)\n+Returns the child given by the list of indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:286\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, T &t)\n+Sets the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< T > childStorage(std::size_t i)\n+Returns the storage of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+Access to the type and storage type of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n+T type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n+T Type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+Check if type represents a tree path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:184\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00014.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00014.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: treecontainer.hh File Reference</title>\n+<title>dune-typetree: typetraits.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,73 +72,99 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#typedef-members\">Typedefs</a> |\n <a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">treecontainer.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">typetraits.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include <type_traits></code><br />\n-<code>#include <utility></code><br />\n-<code>#include <functional></code><br />\n-<code>#include <array></code><br />\n-<code>#include <dune/common/indices.hh></code><br />\n-<code>#include <dune/common/hybridutilities.hh></code><br />\n-<code>#include <dune/common/rangeutilities.hh></code><br />\n-<code>#include <dune/common/tuplevector.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n </div>\n <p><a href=\"a00014_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01372.html\">Dune::TypeTree::Detail::ContainerFactory< LeafToValue ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01472.html\">Dune::first_type< T0, T... ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01376.html\">Dune::TypeTree::Detail::TreeContainerVectorBackend< Container ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01476.html\">Dune::TypeTree::has_node_tag< T ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01380.html\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue< LeafToValue ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01480.html\">Dune::TypeTree::has_node_tag< T >::yes</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01484.html\">Dune::TypeTree::has_node_tag< T >::no</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01488.html\">Dune::TypeTree::has_node_tag_value< T, V ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01492.html\">Dune::TypeTree::has_node_tag_value< T, V >::maybe< N ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01496.html\">Dune::TypeTree::has_node_tag_value< T, V >::yes</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01500.html\">Dune::TypeTree::has_node_tag_value< T, V >::no</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01504.html\">Dune::TypeTree::has_implementation_tag< T ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01508.html\">Dune::TypeTree::has_implementation_tag< T >::yes</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01512.html\">Dune::TypeTree::has_implementation_tag< T >::no</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01516.html\">Dune::TypeTree::has_implementation_tag_value< T, V ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01520.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::maybe< N ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01524.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::yes</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01528.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::no</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01532.html\">Dune::TypeTree::AlwaysVoid< typename ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01536.html\">Dune::TypeTree::meta_function</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Marker tag declaring a meta function. <a href=\"a01536.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01540.html\">Dune::TypeTree::lazy_evaluate< F ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Helper meta function to delay evaluation of F. <a href=\"a01540.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01544.html\">Dune::TypeTree::lazy_identity< F ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Identity function. <a href=\"a01544.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function< F ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Meta function that evaluates its argument iff it inherits from <a class=\"el\" href=\"a01536.html\" title=\"Marker tag declaring a meta function.\">meta_function</a>. <a href=\"a01548.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01552.html\">Dune::TypeTree::IsTreePath< T ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Check if type represents a tree path. <a href=\"a01552.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n+<tr class=\"memitem:a00107\" id=\"r_a00107\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html\">Dune::TypeTree::impl</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:ga3e7a9f48131918fa219eac08f77f7d29\" id=\"r_ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memTemplParams\" colspan=\"2\">template<class Value , class Tree > </td></tr>\n-<tr class=\"memitem:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">Dune::TypeTree::UniformTreeContainer</a> = std::decay_t< decltype(<a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>< Value >(std::declval< const Tree & >()))></td></tr>\n-<tr class=\"memdesc:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Alias to container type generated by makeTreeContainer for given tree type and uniform value type. <br /></td></tr>\n-<tr class=\"separator:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gab7535d1bef6c77c758247e58c779f9b2\" id=\"r_gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memTemplParams\" colspan=\"2\">template<template< class Node > class LeafToValue, class Tree > </td></tr>\n-<tr class=\"memitem:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">Dune::TypeTree::TreeContainer</a> = std::decay_t< decltype(<a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(std::declval< const Tree & >(), std::declval< <a class=\"el\" href=\"a01380.html\">Detail::LeafToDefaultConstructibleValue</a>< LeafToValue > >()))></td></tr>\n-<tr class=\"memdesc:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Alias to container type generated by makeTreeContainer for give tree type and when using LeafToValue to create values. <br /></td></tr>\n-<tr class=\"separator:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n Functions</h2></td></tr>\n-<tr class=\"memitem:a416f76c3875a856cc26f49af3cd7c56a\" id=\"r_a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memTemplParams\" colspan=\"2\">template<class Container > </td></tr>\n-<tr class=\"memitem:a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">Dune::TypeTree::Detail::makeTreeContainerVectorBackend</a> (Container &&container)</td></tr>\n-<tr class=\"separator:a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga241c26f7d26dc7428cce30566d41c085\" id=\"r_ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class LeafToValue > </td></tr>\n-<tr class=\"memitem:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">Dune::TypeTree::makeTreeContainer</a> (const Tree &tree, LeafToValue &&leafToValue)</td></tr>\n-<tr class=\"memdesc:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create container havin the same structure as the given tree. <br /></td></tr>\n-<tr class=\"separator:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaeba09096f7d6149b08123f545eaccc85\" id=\"r_gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memTemplParams\" colspan=\"2\">template<class Value , class Tree > </td></tr>\n-<tr class=\"memitem:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#gaeba09096f7d6149b08123f545eaccc85\">Dune::TypeTree::makeTreeContainer</a> (const Tree &tree)</td></tr>\n-<tr class=\"memdesc:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create container havin the same structure as the given tree. <br /></td></tr>\n-<tr class=\"separator:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:aa52c80157f2085d6b8f49faa2856595e\" id=\"r_aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n+<tr class=\"memitem:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">T * </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">Dune::TypeTree::declptr</a> ()</td></tr>\n+<tr class=\"memdesc:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Helper function for generating a pointer to a value of type T in an unevaluated operand setting. <br /></td></tr>\n+<tr class=\"separator:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a224db604579b3eae53710448ac4d4547\" id=\"r_a224db604579b3eae53710448ac4d4547\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">Dune::TypeTree::impl::isTreePath</a> (void *) -> std::false_type</td></tr>\n+<tr class=\"separator:a224db604579b3eae53710448ac4d4547\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:acfd196de0f9309186d50cd012950677c\" id=\"r_acfd196de0f9309186d50cd012950677c\"><td class=\"memTemplParams\" colspan=\"2\">template<class... I> </td></tr>\n+<tr class=\"memitem:acfd196de0f9309186d50cd012950677c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html#acfd196de0f9309186d50cd012950677c\">Dune::TypeTree::impl::isTreePath</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< I... > *) -> std::true_type</td></tr>\n+<tr class=\"separator:acfd196de0f9309186d50cd012950677c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a9f06f53488df709cddad40051120e058\" id=\"r_a9f06f53488df709cddad40051120e058\"><td class=\"memTemplParams\" colspan=\"2\">template<class T > </td></tr>\n+<tr class=\"memitem:a9f06f53488df709cddad40051120e058\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\">Dune::TypeTree::isTreePath</a> (const T &) -> <a class=\"el\" href=\"a01552.html\">IsTreePath</a>< T ></td></tr>\n+<tr class=\"memdesc:a9f06f53488df709cddad40051120e058\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Check if given object represents a tree path. <br /></td></tr>\n+<tr class=\"separator:a9f06f53488df709cddad40051120e058\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,62 +1,87 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-treecontainer.hh File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+typetraits.hh File Reference\n #include <type_traits>\n-#include <utility>\n-#include <functional>\n-#include <array>\n-#include <dune/common/indices.hh>\n-#include <dune/common/hybridutilities.hh>\n-#include <dune/common/rangeutilities.hh>\n-#include <dune/common/tuplevector.hh>\n+#include <dune/common/typetraits.hh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\be_\ba_\bf_\bT_\bo_\bV_\ba_\bl_\bu_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be_\b<_\b _\bT_\b0_\b,_\b _\bT_\b._\b._\b._\b _\b>\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b<_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be_\b<_\b _\bL_\be_\ba_\bf_\bT_\bo_\bV_\ba_\bl_\bu_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\by_\be_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\bn_\bo\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bm_\ba_\by_\bb_\be_\b<_\b _\bN_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\by_\be_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bn_\bo\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\by_\be_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\bn_\bo\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bm_\ba_\by_\bb_\be_\b<_\b _\bN_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\by_\be_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bn_\bo\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd_\b<_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+\u00a0 Marker tag declaring a meta function. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bF_\b _\b>\n+\u00a0 Helper meta function to delay evaluation of F. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b<_\b _\bF_\b _\b>\n+\u00a0 Identity function. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bF_\b _\b>\n+\u00a0 Meta function that evaluates its argument iff it inherits from\n+ _\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bT_\b _\b>\n+\u00a0 Check if type represents a tree path. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template<class Value , class Tree >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t< decltype\n- (_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br< Value >(std::declval< const Tree & >()))>\n-\u00a0 Alias to container type generated by makeTreeContainer for given tree\n- type and uniform value type.\n-\u00a0\n-template<template< class Node > class LeafToValue, class Tree >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t< decltype(_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n- (std::declval< const Tree & >(), std::declval< _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:\n- _\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be< LeafToValue > >()))>\n-\u00a0 Alias to container type generated by makeTreeContainer for give tree\n- type and when using LeafToValue to create values.\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl\n \u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<class Container >\n-auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd (Container\n- &&container)\n-\u00a0\n-template<class Tree , class LeafToValue >\n-auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br (const Tree &tree, LeafToValue\n- &&leafToValue)\n-\u00a0 Create container havin the same structure as the given tree.\n-\u00a0\n-template<class Value , class Tree >\n-auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br (const Tree &tree)\n-\u00a0 Create container havin the same structure as the given tree.\n+template<typename T >\n+ T *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bc_\bl_\bp_\bt_\br ()\n+\u00a0 Helper function for generating a pointer to a value of type T\n+ in an unevaluated operand setting.\n+\u00a0\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (void *) -> std::false_type\n+\u00a0\n+template<class... I>\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< I... >\n+ *) -> std::true_type\n+\u00a0\n+template<class T >\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T &) -> _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T >\n+\u00a0 Check if given object represents a tree path.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00014_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00014_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: treecontainer.hh Source File</title>\n+<title>dune-typetree: typetraits.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,333 +74,278 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">treecontainer.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">typetraits.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00014.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <utility></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <functional></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/rangeutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/tuplevector.hh></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">namespace </span>Detail {</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"comment\"> * \\brief A factory class creating a hybrid container compatible with a type tree</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span><span class=\"comment\"> *</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"comment\"> * This class allows to create a nested hybrid container having the same structure</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"comment\"> * as a given type tree. Power nodes are represented as std::array's while composite</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"comment\"> * nodes are represented as Dune::TupleVector's. The stored values for the leaf nodes</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"comment\"> * are creating using a given predicate. Once created, the factory provides an</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"comment\"> * operator() creating the container for the tree given as argument.</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"comment\"> *</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"comment\"> * \\tparam LeafToValue Type of a predicate that determines the stored values at the leafs</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> LeafToValue></div>\n-<div class=\"foldopen\" id=\"foldopen00038\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html\"> 38</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01372.html\">ContainerFactory</a></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keyword\">using </span>DynamicDegreeConcept = <span class=\"keyword\">decltype</span>((std::size_t(std::declval<N>().<a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>()), <span class=\"keyword\">true</span>));</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">using </span>StaticDegreeConcept = <span class=\"keyword\">decltype</span>((std::integral_constant<std::size_t, N::degree()>{}, <span class=\"keyword\">true</span>));</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">using </span>DynamicChildAccessConcept = <span class=\"keyword\">decltype</span>((std::declval<N>().child(0u), <span class=\"keyword\">true</span>));</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\"> 58</a></span> <a class=\"code hl_function\" href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\">ContainerFactory</a>(LeafToValue leafToValue) :</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> leafToValue_(leafToValue)</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\"> 63</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node)</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> {</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keywordflow\">return</span> (*<span class=\"keyword\">this</span>)(node, Dune::PriorityTag<5>{});</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> }</div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> <span class=\"comment\">// Provide some more C++11 TMP helpers.</span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"comment\">// These should be upstreamed to dune-common ASAP.</span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01468.html\"> 21</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01468.html\">first_type</a>;</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T0, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00024\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01472.html\"> 24</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01468.html\">first_type</a><T0,T...></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> {</div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01472.html#a86292d90287ae32933442f183d478e62\"> 26</a></span> <span class=\"keyword\">typedef</span> T0 <a class=\"code hl_typedef\" href=\"a01472.html#a86292d90287ae32933442f183d478e62\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00032\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html\"> 32</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01476.html\">has_node_tag</a></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\"> 34</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01480.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\">dummy</a>[1]; };</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\"> 35</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01484.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\">dummy</a>[2]; };</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\"> 38</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01480.html\">yes</a> <a class=\"code hl_function\" href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<X></a> *);</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\"> 40</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01484.html\">no</a> <a class=\"code hl_function\" href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\">test</a>(...);</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#a371c998d5fbec08670affa46871e955f\"> 43</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01476.html#a371c998d5fbec08670affa46871e955f\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01480.html\">yes</a>);</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> V></div>\n+<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html\"> 47</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01488.html\">has_node_tag_value</a></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">int</span> N></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\"> 50</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01492.html\">maybe</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\">dummy</a>[N+1]; };</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\"> 51</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01496.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\">dummy</a>[2]; };</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\"> 52</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01500.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\">dummy</a>[1]; };</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01492.html\">maybe<std::is_base_of<V, NodeTag<X></a>><a class=\"code hl_variable\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">::value</a>></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\"> 56</a></span> <a class=\"code hl_function\" href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<X></a> * a);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#af380ad715d581f707130b84bcb94f144\"> 58</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01500.html\">no</a> <a class=\"code hl_function\" href=\"a01488.html#af380ad715d581f707130b84bcb94f144\">test</a>(...);</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\"> 61</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01496.html\">yes</a>);</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html\"> 65</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01504.html\">has_implementation_tag</a></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\"> 67</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01508.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\">dummy</a>[1]; };</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\"> 68</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01512.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\">dummy</a>[2]; };</div>\n <div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> std::enable_if_t<Node::isLeaf, bool> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<4>)</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keywordflow\">return</span> leafToValue_(node);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> StaticDegreeConcept<Node> = <span class=\"keyword\">true</span>,</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> DynamicChildAccessConcept<Node> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<3>)</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span> Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... indices) {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> std::array{(*this)(node.child(indices))...};</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }, std::make_index_sequence<std::size_t(Node::degree())>());</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> }</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#a7b759cea365a646f50b75937da355c83\"> 71</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01508.html\">yes</a> <a class=\"code hl_function\" href=\"a01504.html#a7b759cea365a646f50b75937da355c83\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag<X></a> *);</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\"> 73</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01512.html\">no</a> <a class=\"code hl_function\" href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\">test</a>(...);</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\"> 76</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01508.html\">yes</a>);</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> V></div>\n+<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html\"> 80</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01516.html\">has_implementation_tag_value</a></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">int</span> N></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\"> 83</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01520.html\">maybe</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\">dummy</a>[N+1]; };</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01524.html#a785da89b03a035b24788f677da3344cb\"> 84</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01524.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01524.html#a785da89b03a035b24788f677da3344cb\">dummy</a>[2]; };</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\"> 85</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01528.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\">dummy</a>[1]; };</div>\n <div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> DynamicDegreeConcept<Node> = <span class=\"keyword\">true</span>,</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> DynamicChildAccessConcept<Node> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<2>)</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">using </span>TransformedChild = <span class=\"keyword\">decltype</span>((*this)(node.child(0)));</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> std::vector<TransformedChild> container;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> container.reserve(node.degree());</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keywordflow\">for</span> (std::size_t i = 0; i < node.degree(); ++i)</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> container.emplace_back((*<span class=\"keyword\">this</span>)(node.child(i)));</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keywordflow\">return</span> container;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> }</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> StaticDegreeConcept<Node> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<1>)</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keywordflow\">return</span> Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... indices) {</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> Dune::makeTupleVector((*<span class=\"keyword\">this</span>)(node.child(indices))...);</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }, std::make_index_sequence<std::size_t(Node::degree())>());</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> }</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01520.html\">maybe<std::is_base_of<V, ImplementationTag<X></a>><a class=\"code hl_variable\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">::value</a>></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\"> 89</a></span> <a class=\"code hl_function\" href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag<X></a> * a);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\"> 91</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01528.html\">no</a> <a class=\"code hl_function\" href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\">test</a>(...);</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\"> 94</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01524.html\">yes</a>);</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01532.html\"> 98</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01532.html\">AlwaysVoid</a></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> {</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\"> 100</a></span> <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_typedef\" href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\"> 106</a></span> T* <a class=\"code hl_function\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">declptr</a>();</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n <div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> LeafToValue leafToValue_;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span><span class=\"comment\"> * \\brief Wrap nested container to provide a VectorBackend</span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Container></div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html\"> 118</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend</a></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> C></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) accessByTreePath(C&& container, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<></a>& path)</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> {</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keywordflow\">return</span> container;</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> }</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class</span>... T></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) accessByTreePath(C&& container, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path)</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">auto</span> head = path[Dune::Indices::_0];</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">auto</span> tailPath = Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(path[Dune::index_constant<i+1>{}]...);</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> }, std::make_index_sequence<<span class=\"keyword\">sizeof</span>...(T)-1>());</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keywordflow\">return</span> accessByTreePath(container[head], tailPath);</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> }</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class </span>Tree,</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> std::enable_if_t<Tree::isLeaf, bool> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& <span class=\"comment\">/*container*/</span>, <span class=\"keyword\">const</span> Tree& <span class=\"comment\">/*tree*/</span>, Dune::PriorityTag<2>)</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"comment\">/* do nothing */</span></div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> }</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class </span>Tree,</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keyword\">class </span>= <span class=\"keyword\">decltype</span>(std::declval<C>().resize(0u))></div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& container, <span class=\"keyword\">const</span> Tree& tree, Dune::PriorityTag<1>)</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> {</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> container.resize(tree.degree());</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> });</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> C, <span class=\"keyword\">class</span> Tree></div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& container, <span class=\"keyword\">const</span> Tree& tree, Dune::PriorityTag<0>)</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> {</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> });</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> }</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"comment\">// Support for lazy evaluation of meta functions. This is required when doing</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"comment\">// nested tag dispatch without C++11-style typedefs (based on using syntax).</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"comment\">// The standard struct-based meta functions cause premature evaluation in a</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"comment\">// context that is not SFINAE-compatible. We thus have to return the meta function</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"comment\">// without evaluating it, placing that burden on the caller. On the other hand,</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"comment\">// the lookup will often directly be the target type, so here is some helper code</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"comment\">// to automatically do the additional evaluation if necessary.</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> <span class=\"comment\">// Too bad that the new syntax is GCC 4.6+...</span></div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01536.html\"> 123</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01536.html\">meta_function</a> {};</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n+<div class=\"foldopen\" id=\"foldopen00127\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01540.html\"> 127</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01540.html\">lazy_evaluate</a></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\"> 129</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> F::type <a class=\"code hl_typedef\" href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n+<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01544.html\"> 134</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01544.html\">lazy_identity</a></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\"> 136</a></span> <span class=\"keyword\">typedef</span> F <a class=\"code hl_typedef\" href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n+<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01548.html\"> 141</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01548.html\">evaluate_if_meta_function</a></div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::conditional<</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> std::is_base_of<meta_function,F>::value,</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <a class=\"code hl_struct\" href=\"a01540.html\">lazy_evaluate<F></a>,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <a class=\"code hl_struct\" href=\"a01544.html\">lazy_identity<F></a></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\"> 147</a></span> >::type::type <a class=\"code hl_typedef\" href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html\"> 150</a></span> <span class=\"keyword\">namespace </span>impl {</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"comment\">// Check if type is a or is derived from one of the tree path types</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"comment\">// Default overload for types not representing a tree path</span></div>\n+<div class=\"foldopen\" id=\"foldopen00155\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\"> 155</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">isTreePath</a>(<span class=\"keywordtype\">void</span>*)</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> -> std::false_type</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> {</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keywordflow\">return</span> std::false_type();</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keyword\">using </span>TypeTreeConcept = <span class=\"keyword\">decltype</span>((</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> std::declval<T>().degree(),</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> T::isLeaf,</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> T::isPower,</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> T::isComposite,</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">true</span>));</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"comment\">// Overload for instances of HybridTreePath<...></span></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... I></div>\n+<div class=\"foldopen\" id=\"foldopen00163\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html#acfd196de0f9309186d50cd012950677c\"> 163</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">isTreePath</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<I...></a>*)</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> -> std::true_type</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keywordflow\">return</span> std::true_type();</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\"> 171</a></span> <a class=\"code hl_function\" href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\">TreeContainerVectorBackend</a>(Container&& container) :</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> container_(std::move(container))</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Tree, TypeTreeConcept<Tree> = true></div>\n-<div class=\"foldopen\" id=\"foldopen00177\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\"> 177</a></span> <a class=\"code hl_function\" href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\">TreeContainerVectorBackend</a>(<span class=\"keyword\">const</span> Tree& tree) :</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend</a>()</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> {</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> this->resize(tree);</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>C = Container,</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> std::enable_if_t<std::is_default_constructible_v<C>, <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\"> 186</a></span> <a class=\"code hl_function\" href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\">TreeContainerVectorBackend</a>() :</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> container_()</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> </div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00191\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a12a12acc07934495a54732791e1dbf7e\"> 191</a></span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <span class=\"keyword\">operator</span>[](<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> {</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keywordflow\">return</span> accessByTreePath(container_, path);</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00197\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a3041c80b57522f971128eeba7411c3aa\"> 197</a></span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <span class=\"keyword\">operator</span>[](<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path)</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> <span class=\"keywordflow\">return</span> accessByTreePath(container_, path);</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, TypeTreeConcept<Tree> = true></div>\n-<div class=\"foldopen\" id=\"foldopen00204\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\"> 204</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\">resize</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> resizeImpl(container_, tree, Dune::PriorityTag<5>{});</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00209\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\"> 209</a></span> <span class=\"keyword\">const</span> Container& <a class=\"code hl_function\" href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\">data</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> <span class=\"keywordflow\">return</span> container_;</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\"> 214</a></span> Container& <a class=\"code hl_function\" href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\">data</a>()</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"keywordflow\">return</span> container_;</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> Container container_;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Container></div>\n-<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\"> 224</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">makeTreeContainerVectorBackend</a>(Container&& container)</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> {</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend<std::decay_t<Container></a>>(std::forward<Container>(container));</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span><span class=\"comment\"> * \\brief A simple lambda for creating default constructible values from a node</span></div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span><span class=\"comment\"> *</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span><span class=\"comment\"> * This simply returns LeafToValue<Node>{} for a given Node. It's needed</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span><span class=\"comment\"> * because using a lambda expression in a using declaration is not allowed</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span><span class=\"comment\"> * because it's an unevaluated context.</span></div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <span class=\"keyword\">template</span><<span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node> <span class=\"keyword\">class </span>LeafToValue></div>\n-<div class=\"foldopen\" id=\"foldopen00237\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01380.html\"> 237</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01380.html\">LeafToDefaultConstructibleValue</a></div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> {</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00240\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\"> 240</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\">operator()</a>(<span class=\"keyword\">const</span> Node& node)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keywordflow\">return</span> LeafToValue<Node>{};</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> </div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> } <span class=\"comment\">// namespace Detail</span></div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> </div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> LeafToValue></div>\n-<div class=\"foldopen\" id=\"foldopen00268\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\"> 268</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(<span class=\"keyword\">const</span> Tree& tree, LeafToValue&& leafToValue)</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> {</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">auto</span> f = std::ref(leafToValue);</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <span class=\"keyword\">auto</span> factory = <a class=\"code hl_class\" href=\"a01372.html\">Detail::ContainerFactory<decltype(f)></a>(f);</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keywordflow\">return</span> Detail::makeTreeContainerVectorBackend(factory(tree));</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Value, <span class=\"keyword\">class</span> Tree></div>\n-<div class=\"foldopen\" id=\"foldopen00291\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#gaeba09096f7d6149b08123f545eaccc85\"> 291</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> {</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(tree, [](<span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>&) {<span class=\"keywordflow\">return</span> Value{};});</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Value, <span class=\"keyword\">class</span> Tree></div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\"> 300</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">UniformTreeContainer</a> = std::decay_t<decltype(makeTreeContainer<Value>(std::declval<const Tree&>()))>;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> </div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">template</span><<span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node> <span class=\"keyword\">class </span>LeafToValue, <span class=\"keyword\">class </span>Tree></div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\"> 306</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">TreeContainer</a> = std::decay_t<decltype(makeTreeContainer(std::declval<const Tree&>(), std::declval<Detail::LeafToDefaultConstructibleValue<LeafToValue>>()))>;</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> </div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> </div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00089_html_ga241c26f7d26dc7428cce30566d41c085\"><div class=\"ttname\"><a href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">Dune::TypeTree::makeTreeContainer</a></div><div class=\"ttdeci\">auto makeTreeContainer(const Tree &tree, LeafToValue &&leafToValue)</div><div class=\"ttdoc\">Create container havin the same structure as the given tree.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:268</div></div>\n-<div class=\"ttc\" id=\"aa00089_html_ga3e7a9f48131918fa219eac08f77f7d29\"><div class=\"ttname\"><a href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">Dune::TypeTree::UniformTreeContainer</a></div><div class=\"ttdeci\">std::decay_t< decltype(makeTreeContainer< Value >(std::declval< const Tree & >()))> UniformTreeContainer</div><div class=\"ttdoc\">Alias to container type generated by makeTreeContainer for given tree type and uniform value type.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:300</div></div>\n-<div class=\"ttc\" id=\"aa00089_html_gab7535d1bef6c77c758247e58c779f9b2\"><div class=\"ttname\"><a href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">Dune::TypeTree::TreeContainer</a></div><div class=\"ttdeci\">std::decay_t< decltype(makeTreeContainer(std::declval< const Tree & >(), std::declval< Detail::LeafToDefaultConstructibleValue< LeafToValue > >()))> TreeContainer</div><div class=\"ttdoc\">Alias to container type generated by makeTreeContainer for give tree type and when using LeafToValue ...</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:306</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><div class=\"ttname\"><a href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a></div><div class=\"ttdeci\">std::size_t degree(const Node &node)</div><div class=\"ttdoc\">Returns the degree of node as run time information.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:79</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00182\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01552.html\"> 182</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath</a> :</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">public</span> decltype(impl::isTreePath((typename std::decay<T>::type*)(nullptr)))</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00193\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\"> 193</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\">isTreePath</a>(<span class=\"keyword\">const</span> T&)</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> -> <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<T></a></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> {</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<T></a>();</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> } <span class=\"comment\">// end namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span>} <span class=\"comment\">// end namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_gab9fecf64a233645a10b181d50e519441\"><div class=\"ttname\"><a href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a></div><div class=\"ttdeci\">typename std::decay_t< T >::ImplementationTag ImplementationTag</div><div class=\"ttdoc\">Returns the implementation tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:74</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a416f76c3875a856cc26f49af3cd7c56a\"><div class=\"ttname\"><a href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">Dune::TypeTree::Detail::makeTreeContainerVectorBackend</a></div><div class=\"ttdeci\">auto makeTreeContainerVectorBackend(Container &&container)</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:224</div></div>\n-<div class=\"ttc\" id=\"aa01372_html\"><div class=\"ttname\"><a href=\"a01372.html\">Dune::TypeTree::Detail::ContainerFactory</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:39</div></div>\n-<div class=\"ttc\" id=\"aa01372_html_a0aacb9523b1b7a95a3f445a40808d126\"><div class=\"ttname\"><a href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">Dune::TypeTree::Detail::ContainerFactory::operator()</a></div><div class=\"ttdeci\">auto operator()(const Node &node)</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:63</div></div>\n-<div class=\"ttc\" id=\"aa01372_html_a98d48631301c7308b5e39fc3dadd3094\"><div class=\"ttname\"><a href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\">Dune::TypeTree::Detail::ContainerFactory::ContainerFactory</a></div><div class=\"ttdeci\">ContainerFactory(LeafToValue leafToValue)</div><div class=\"ttdoc\">Create ContainerFactory.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:58</div></div>\n-<div class=\"ttc\" id=\"aa01376_html\"><div class=\"ttname\"><a href=\"a01376.html\">Dune::TypeTree::Detail::TreeContainerVectorBackend</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:119</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_a0a1f4e2fd03f6cd5fa77152275ba2563\"><div class=\"ttname\"><a href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\">Dune::TypeTree::Detail::TreeContainerVectorBackend::resize</a></div><div class=\"ttdeci\">void resize(const Tree &tree)</div><div class=\"ttdoc\">Resize the (nested) container depending on the degree of the tree nodes.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:204</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_a541f62684e2b8f4072af24a16ff4b815\"><div class=\"ttname\"><a href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\">Dune::TypeTree::Detail::TreeContainerVectorBackend::data</a></div><div class=\"ttdeci\">Container & data()</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:214</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_a878c4519c635824ba10ccf41ebfbc0c7\"><div class=\"ttname\"><a href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\">Dune::TypeTree::Detail::TreeContainerVectorBackend::data</a></div><div class=\"ttdeci\">const Container & data() const</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:209</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_aa5c7b22f3a5474e026210ff852c8c853\"><div class=\"ttname\"><a href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend(Container &&container)</div><div class=\"ttdoc\">Move the passed container into the internal storage.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:171</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_ab004f67841ac86b770cb61a17a75f59c\"><div class=\"ttname\"><a href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend()</div><div class=\"ttdoc\">Default constructor. The stored container might need to be resized before usage.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:186</div></div>\n-<div class=\"ttc\" id=\"aa01376_html_abd7766f86dea240d851cc17510b5b1f5\"><div class=\"ttname\"><a href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend(const Tree &tree)</div><div class=\"ttdoc\">Default construct the container and perform a resize depending on the tree-node degrees.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:177</div></div>\n-<div class=\"ttc\" id=\"aa01380_html\"><div class=\"ttname\"><a href=\"a01380.html\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:238</div></div>\n-<div class=\"ttc\" id=\"aa01380_html_a0ae3fd8805cbbf281be705c64f8995b7\"><div class=\"ttname\"><a href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue::operator()</a></div><div class=\"ttdeci\">auto operator()(const Node &node) const</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:240</div></div>\n+<div class=\"ttc\" id=\"aa00097_html_a9f06f53488df709cddad40051120e058\"><div class=\"ttname\"><a href=\"a00097.html#a9f06f53488df709cddad40051120e058\">Dune::TypeTree::isTreePath</a></div><div class=\"ttdeci\">constexpr auto isTreePath(const T &) -> IsTreePath< T ></div><div class=\"ttdoc\">Check if given object represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:193</div></div>\n+<div class=\"ttc\" id=\"aa00097_html_aa52c80157f2085d6b8f49faa2856595e\"><div class=\"ttname\"><a href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">Dune::TypeTree::declptr</a></div><div class=\"ttdeci\">T * declptr()</div><div class=\"ttdoc\">Helper function for generating a pointer to a value of type T in an unevaluated operand setting.</div></div>\n+<div class=\"ttc\" id=\"aa00107_html_a224db604579b3eae53710448ac4d4547\"><div class=\"ttname\"><a href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">Dune::TypeTree::impl::isTreePath</a></div><div class=\"ttdeci\">constexpr auto isTreePath(void *) -> std::false_type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:155</div></div>\n <div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n+<div class=\"ttc\" id=\"aa01468_html\"><div class=\"ttname\"><a href=\"a01468.html\">Dune::first_type</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:21</div></div>\n+<div class=\"ttc\" id=\"aa01472_html_a86292d90287ae32933442f183d478e62\"><div class=\"ttname\"><a href=\"a01472.html#a86292d90287ae32933442f183d478e62\">Dune::first_type< T0, T... >::type</a></div><div class=\"ttdeci\">T0 type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:26</div></div>\n+<div class=\"ttc\" id=\"aa01476_html\"><div class=\"ttname\"><a href=\"a01476.html\">Dune::TypeTree::has_node_tag</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:33</div></div>\n+<div class=\"ttc\" id=\"aa01476_html_a371c998d5fbec08670affa46871e955f\"><div class=\"ttname\"><a href=\"a01476.html#a371c998d5fbec08670affa46871e955f\">Dune::TypeTree::has_node_tag::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines a NodeTag.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:43</div></div>\n+<div class=\"ttc\" id=\"aa01476_html_ac19e6e056b0e079ed7d1ca1b4785da14\"><div class=\"ttname\"><a href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\">Dune::TypeTree::has_node_tag::test</a></div><div class=\"ttdeci\">static yes test(NodeTag< X > *)</div></div>\n+<div class=\"ttc\" id=\"aa01476_html_acd3615ce65fda959179c09aae17edf50\"><div class=\"ttname\"><a href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\">Dune::TypeTree::has_node_tag::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n+<div class=\"ttc\" id=\"aa01480_html\"><div class=\"ttname\"><a href=\"a01480.html\">Dune::TypeTree::has_node_tag::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:34</div></div>\n+<div class=\"ttc\" id=\"aa01480_html_a3192df83f6a29fbfebeee8b4b6eaf0ca\"><div class=\"ttname\"><a href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\">Dune::TypeTree::has_node_tag::yes::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:34</div></div>\n+<div class=\"ttc\" id=\"aa01484_html\"><div class=\"ttname\"><a href=\"a01484.html\">Dune::TypeTree::has_node_tag::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:35</div></div>\n+<div class=\"ttc\" id=\"aa01484_html_a75441ea51bdc776b367c2a8c3b868300\"><div class=\"ttname\"><a href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\">Dune::TypeTree::has_node_tag::no::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:35</div></div>\n+<div class=\"ttc\" id=\"aa01488_html\"><div class=\"ttname\"><a href=\"a01488.html\">Dune::TypeTree::has_node_tag_value</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:48</div></div>\n+<div class=\"ttc\" id=\"aa01488_html_a6c362704e90879dcd3ec9224f3153da7\"><div class=\"ttname\"><a href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\">Dune::TypeTree::has_node_tag_value::test</a></div><div class=\"ttdeci\">static maybe< std::is_base_of< V, NodeTag< X > >::value > test(NodeTag< X > *a)</div></div>\n+<div class=\"ttc\" id=\"aa01488_html_aac5901b0648988f6fb1792b190e2394b\"><div class=\"ttname\"><a href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">Dune::TypeTree::has_node_tag_value::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines a NodeTag of type V.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:61</div></div>\n+<div class=\"ttc\" id=\"aa01488_html_af380ad715d581f707130b84bcb94f144\"><div class=\"ttname\"><a href=\"a01488.html#af380ad715d581f707130b84bcb94f144\">Dune::TypeTree::has_node_tag_value::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n+<div class=\"ttc\" id=\"aa01492_html\"><div class=\"ttname\"><a href=\"a01492.html\">Dune::TypeTree::has_node_tag_value::maybe</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:50</div></div>\n+<div class=\"ttc\" id=\"aa01492_html_a94ff68b96ae845cae3f6d627f3b5a028\"><div class=\"ttname\"><a href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\">Dune::TypeTree::has_node_tag_value::maybe::dummy</a></div><div class=\"ttdeci\">char dummy[N+1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:50</div></div>\n+<div class=\"ttc\" id=\"aa01496_html\"><div class=\"ttname\"><a href=\"a01496.html\">Dune::TypeTree::has_node_tag_value::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:51</div></div>\n+<div class=\"ttc\" id=\"aa01496_html_a5e55794068fc41f0874216ce5c3490b9\"><div class=\"ttname\"><a href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\">Dune::TypeTree::has_node_tag_value::yes::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:51</div></div>\n+<div class=\"ttc\" id=\"aa01500_html\"><div class=\"ttname\"><a href=\"a01500.html\">Dune::TypeTree::has_node_tag_value::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:52</div></div>\n+<div class=\"ttc\" id=\"aa01500_html_ad8b08c8a2e083b49c652c94aaaa23d91\"><div class=\"ttname\"><a href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\">Dune::TypeTree::has_node_tag_value::no::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:52</div></div>\n+<div class=\"ttc\" id=\"aa01504_html\"><div class=\"ttname\"><a href=\"a01504.html\">Dune::TypeTree::has_implementation_tag</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:66</div></div>\n+<div class=\"ttc\" id=\"aa01504_html_a7b759cea365a646f50b75937da355c83\"><div class=\"ttname\"><a href=\"a01504.html#a7b759cea365a646f50b75937da355c83\">Dune::TypeTree::has_implementation_tag::test</a></div><div class=\"ttdeci\">static yes test(ImplementationTag< X > *)</div></div>\n+<div class=\"ttc\" id=\"aa01504_html_abcd13b6ded4ca8b54ee1c27b38f32fec\"><div class=\"ttname\"><a href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\">Dune::TypeTree::has_implementation_tag::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n+<div class=\"ttc\" id=\"aa01504_html_ac4c8f738c1f7a2e1285ae9c00fa7c4e2\"><div class=\"ttname\"><a href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\">Dune::TypeTree::has_implementation_tag::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines an ImplementationTag.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:76</div></div>\n+<div class=\"ttc\" id=\"aa01508_html\"><div class=\"ttname\"><a href=\"a01508.html\">Dune::TypeTree::has_implementation_tag::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:67</div></div>\n+<div class=\"ttc\" id=\"aa01508_html_a6d85e10ee3fda0b59a07a1bedd2efd32\"><div class=\"ttname\"><a href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\">Dune::TypeTree::has_implementation_tag::yes::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:67</div></div>\n+<div class=\"ttc\" id=\"aa01512_html\"><div class=\"ttname\"><a href=\"a01512.html\">Dune::TypeTree::has_implementation_tag::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:68</div></div>\n+<div class=\"ttc\" id=\"aa01512_html_a16f6850149a28fedb189d6df08f5a94f\"><div class=\"ttname\"><a href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\">Dune::TypeTree::has_implementation_tag::no::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:68</div></div>\n+<div class=\"ttc\" id=\"aa01516_html\"><div class=\"ttname\"><a href=\"a01516.html\">Dune::TypeTree::has_implementation_tag_value</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:81</div></div>\n+<div class=\"ttc\" id=\"aa01516_html_a32be618fa6d36b1aa7a024e59f41d577\"><div class=\"ttname\"><a href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\">Dune::TypeTree::has_implementation_tag_value::test</a></div><div class=\"ttdeci\">static maybe< std::is_base_of< V, ImplementationTag< X > >::value > test(ImplementationTag< X > *a)</div></div>\n+<div class=\"ttc\" id=\"aa01516_html_a6fef49afbb6f6fb52baf55bad5aa52ff\"><div class=\"ttname\"><a href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\">Dune::TypeTree::has_implementation_tag_value::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n+<div class=\"ttc\" id=\"aa01516_html_a7d440aaa7ee60fac9c465c4cc2ec7910\"><div class=\"ttname\"><a href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">Dune::TypeTree::has_implementation_tag_value::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines an ImplementationTag of type V.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:94</div></div>\n+<div class=\"ttc\" id=\"aa01520_html\"><div class=\"ttname\"><a href=\"a01520.html\">Dune::TypeTree::has_implementation_tag_value::maybe</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa01520_html_a599b42ba6b2a5d0f827cdc9bb67a4718\"><div class=\"ttname\"><a href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\">Dune::TypeTree::has_implementation_tag_value::maybe::dummy</a></div><div class=\"ttdeci\">char dummy[N+1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa01524_html\"><div class=\"ttname\"><a href=\"a01524.html\">Dune::TypeTree::has_implementation_tag_value::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:84</div></div>\n+<div class=\"ttc\" id=\"aa01524_html_a785da89b03a035b24788f677da3344cb\"><div class=\"ttname\"><a href=\"a01524.html#a785da89b03a035b24788f677da3344cb\">Dune::TypeTree::has_implementation_tag_value::yes::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:84</div></div>\n+<div class=\"ttc\" id=\"aa01528_html\"><div class=\"ttname\"><a href=\"a01528.html\">Dune::TypeTree::has_implementation_tag_value::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:85</div></div>\n+<div class=\"ttc\" id=\"aa01528_html_aa8ccfe6f4dff783e7222fe87254655aa\"><div class=\"ttname\"><a href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\">Dune::TypeTree::has_implementation_tag_value::no::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:85</div></div>\n+<div class=\"ttc\" id=\"aa01532_html\"><div class=\"ttname\"><a href=\"a01532.html\">Dune::TypeTree::AlwaysVoid</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:99</div></div>\n+<div class=\"ttc\" id=\"aa01532_html_a56294a12e63e763b9e82a36d503be309\"><div class=\"ttname\"><a href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\">Dune::TypeTree::AlwaysVoid::type</a></div><div class=\"ttdeci\">void type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:100</div></div>\n+<div class=\"ttc\" id=\"aa01536_html\"><div class=\"ttname\"><a href=\"a01536.html\">Dune::TypeTree::meta_function</a></div><div class=\"ttdoc\">Marker tag declaring a meta function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:123</div></div>\n+<div class=\"ttc\" id=\"aa01540_html\"><div class=\"ttname\"><a href=\"a01540.html\">Dune::TypeTree::lazy_evaluate</a></div><div class=\"ttdoc\">Helper meta function to delay evaluation of F.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa01540_html_a699cb90460ba44cc0a4e5197b409d18d\"><div class=\"ttname\"><a href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\">Dune::TypeTree::lazy_evaluate::type</a></div><div class=\"ttdeci\">F::type type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:129</div></div>\n+<div class=\"ttc\" id=\"aa01544_html\"><div class=\"ttname\"><a href=\"a01544.html\">Dune::TypeTree::lazy_identity</a></div><div class=\"ttdoc\">Identity function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:135</div></div>\n+<div class=\"ttc\" id=\"aa01544_html_a4144fb6426f024627ed86c44480f17c7\"><div class=\"ttname\"><a href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\">Dune::TypeTree::lazy_identity::type</a></div><div class=\"ttdeci\">F type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:136</div></div>\n+<div class=\"ttc\" id=\"aa01548_html\"><div class=\"ttname\"><a href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function</a></div><div class=\"ttdoc\">Meta function that evaluates its argument iff it inherits from meta_function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:142</div></div>\n+<div class=\"ttc\" id=\"aa01548_html_a06a6cc811119a86e04828a84c0435588\"><div class=\"ttname\"><a href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\">Dune::TypeTree::evaluate_if_meta_function::type</a></div><div class=\"ttdeci\">std::conditional< std::is_base_of< meta_function, F >::value, lazy_evaluate< F >, lazy_identity< F > >::type::type type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:147</div></div>\n+<div class=\"ttc\" id=\"aa01552_html\"><div class=\"ttname\"><a href=\"a01552.html\">Dune::TypeTree::IsTreePath</a></div><div class=\"ttdoc\">Check if type represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:184</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,367 +1,346 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-treecontainer.hh\n+typetraits.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TREECONTAINER_HH\n-7#define DUNE_TYPETREE_TREECONTAINER_HH\n+6#ifndef DUNE_TYPETREE_TYPETRAITS_HH\n+7#define DUNE_TYPETREE_TYPETRAITS_HH\n 8\n 9#include <type_traits>\n-10#include <utility>\n-11#include <functional>\n-12#include <array>\n-13\n-14#include <dune/common/indices.hh>\n-15#include <dune/common/hybridutilities.hh>\n-16#include <dune/common/rangeutilities.hh>\n-17#include <dune/common/tuplevector.hh>\n-18\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be {\n-22 namespace TypeTree {\n-23\n-24 namespace Detail {\n-25\n-26 /*\n-27 * \\brief A factory class creating a hybrid container compatible with a type\n-tree\n-28 *\n-29 * This class allows to create a nested hybrid container having the same\n-structure\n-30 * as a given type tree. Power nodes are represented as std::array's while\n-composite\n-31 * nodes are represented as Dune::TupleVector's. The stored values for the\n-leaf nodes\n-32 * are creating using a given predicate. Once created, the factory provides\n-an\n-33 * operator() creating the container for the tree given as argument.\n-34 *\n-35 * \\tparam LeafToValue Type of a predicate that determines the stored values\n-at the leafs\n-36 */\n-37 template<class LeafToValue>\n-_\b3_\b8 class _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-39 {\n-40 template<class N>\n-41 using DynamicDegreeConcept = decltype((std::size_t(std::declval<N>()._\bd_\be_\bg_\br_\be_\be\n-()), true));\n-42\n-43 template<class N>\n-44 using StaticDegreeConcept = decltype((std::integral_constant<std::size_t,\n-N::degree()>{}, true));\n+10#include <dune/common/typetraits.hh>\n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+17 // Provide some more C++11 TMP helpers.\n+18 // These should be upstreamed to dune-common ASAP.\n+19\n+20 template<typename... T>\n+_\b2_\b1 struct _\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be;\n+22\n+23 template<typename T0, typename... T>\n+_\b2_\b4 struct _\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be<T0,T...>\n+25 {\n+_\b2_\b6 typedef T0 _\bt_\by_\bp_\be;\n+27 };\n+28\n+29 namespace TypeTree {\n+30\n+31 template<typename T>\n+_\b3_\b2 struct _\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg\n+33 {\n+_\b3_\b4 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[1]; };\n+_\b3_\b5 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[2]; };\n+36\n+37 template<typename X>\n+_\b3_\b8 static _\by_\be_\bs _\bt_\be_\bs_\bt(_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b> *);\n+39 template<typename X>\n+_\b4_\b0 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n+41\n+_\b4_\b3 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n+44 };\n 45\n-46 template<class N>\n-47 using DynamicChildAccessConcept = decltype((std::declval<N>().child(0u),\n-true));\n-48\n-49 public:\n-50\n-_\b5_\b8 _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(LeafToValue leafToValue) :\n-59 leafToValue_(leafToValue)\n-60 {}\n-61\n-62 template<class Node>\n-_\b6_\b3 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node)\n-64 {\n-65 return (*this)(node, Dune::PriorityTag<5>{});\n-66 }\n-67\n-68 private:\n+46 template<typename T, typename V>\n+_\b4_\b7 struct _\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n+48 {\n+49 template<int N>\n+_\b5_\b0 struct _\bm_\ba_\by_\bb_\be { char _\bd_\bu_\bm_\bm_\by[N+1]; };\n+_\b5_\b1 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[2]; };\n+_\b5_\b2 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[1]; };\n+53\n+54 template<typename X>\n+55 static _\bm_\ba_\by_\bb_\be_\b<_\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bV_\b,_\b _\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b>>_\b:_\b:_\bv_\ba_\bl_\bu_\be>\n+_\b5_\b6 _\bt_\be_\bs_\bt(_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b> * a);\n+57 template<typename X>\n+_\b5_\b8 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n+59\n+_\b6_\b1 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n+62 };\n+63\n+64 template<typename T>\n+_\b6_\b5 struct _\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg\n+66 {\n+_\b6_\b7 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[1]; };\n+_\b6_\b8 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[2]; };\n 69\n-70 template<class Node,\n-71 std::enable_if_t<Node::isLeaf, bool> = true>\n-72 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<4>)\n-73 {\n-74 return leafToValue_(node);\n-75 }\n-76\n-77 template<class Node,\n-78 StaticDegreeConcept<Node> = true,\n-79 DynamicChildAccessConcept<Node> = true>\n-80 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<3>)\n+70 template<typename X>\n+_\b7_\b1 static _\by_\be_\bs _\bt_\be_\bs_\bt(_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b> *);\n+72 template<typename X>\n+_\b7_\b3 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n+74\n+_\b7_\b6 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n+77 };\n+78\n+79 template<typename T, typename V>\n+_\b8_\b0 struct _\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n 81 {\n-82 return Dune::unpackIntegerSequence([&](auto... indices) {\n-83 return std::array{(*this)(node.child(indices))...};\n-84 }, std::make_index_sequence<std::size_t(Node::degree())>());\n-85 }\n+82 template<int N>\n+_\b8_\b3 struct _\bm_\ba_\by_\bb_\be { char _\bd_\bu_\bm_\bm_\by[N+1]; };\n+_\b8_\b4 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[2]; };\n+_\b8_\b5 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[1]; };\n 86\n-87 template<class Node,\n-88 DynamicDegreeConcept<Node> = true,\n-89 DynamicChildAccessConcept<Node> = true>\n-90 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<2>)\n-91 {\n-92 using TransformedChild = decltype((*this)(node.child(0)));\n-93 std::vector<TransformedChild> container;\n-94 container.reserve(node.degree());\n-95 for (std::size_t i = 0; i < node.degree(); ++i)\n-96 container.emplace_back((*this)(node.child(i)));\n-97 return container;\n-98 }\n-99\n-100 template<class Node,\n-101 StaticDegreeConcept<Node> = true>\n-102 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<1>)\n-103 {\n-104 return Dune::unpackIntegerSequence([&](auto... indices) {\n-105 return Dune::makeTupleVector((*this)(node.child(indices))...);\n-106 }, std::make_index_sequence<std::size_t(Node::degree())>());\n-107 }\n+87 template<typename X>\n+88 static _\bm_\ba_\by_\bb_\be_\b<_\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bV_\b,_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b>>_\b:_\b:_\bv_\ba_\bl_\bu_\be>\n+_\b8_\b9 _\bt_\be_\bs_\bt(_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b> * a);\n+90 template<typename X>\n+_\b9_\b1 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n+92\n+_\b9_\b4 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n+95 };\n+96\n+97 template<typename>\n+_\b9_\b8 struct _\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd\n+99 {\n+_\b1_\b0_\b0 typedef void _\bt_\by_\bp_\be;\n+101 };\n+102\n+103\n+105 template<typename T>\n+_\b1_\b0_\b6 T* _\bd_\be_\bc_\bl_\bp_\bt_\br();\n+107\n 108\n-109 private:\n-110 LeafToValue leafToValue_;\n-111 };\n-112\n-113\n-114 /*\n-115 * \\brief Wrap nested container to provide a VectorBackend\n-116 */\n-117 template<class Container>\n-_\b1_\b1_\b8 class _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-119 {\n-120 template<class C>\n-121 static constexpr decltype(auto) accessByTreePath(C&& container, const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b>& path)\n-122 {\n-123 return container;\n-124 }\n-125\n-126 template<class C, class... T>\n-127 static constexpr decltype(auto) accessByTreePath(C&& container, const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path)\n+109 // Support for lazy evaluation of meta functions. This is required when\n+doing\n+110 // nested tag dispatch without C++11-style typedefs (based on using\n+syntax).\n+111 // The standard struct-based meta functions cause premature evaluation in a\n+112 // context that is not SFINAE-compatible. We thus have to return the meta\n+function\n+113 // without evaluating it, placing that burden on the caller. On the other\n+hand,\n+114 // the lookup will often directly be the target type, so here is some\n+helper code\n+115 // to automatically do the additional evaluation if necessary.\n+116 // Too bad that the new syntax is GCC 4.6+...\n+117\n+118\n+120\n+_\b1_\b2_\b3 struct _\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn {};\n+124\n+126 template<typename F>\n+_\b1_\b2_\b7 struct _\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n 128 {\n-129 auto head = path[Dune::Indices::_0];\n-130 auto tailPath = Dune::unpackIntegerSequence([&](auto... i){\n-131 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(path[Dune::index_constant<i+1>{}]...);\n-132 }, std::make_index_sequence<sizeof...(T)-1>());\n-133 return accessByTreePath(container[head], tailPath);\n-134 }\n-135\n-136 template<class C, class Tree,\n-137 std::enable_if_t<Tree::isLeaf, bool> = true>\n-138 static void resizeImpl(C& /*container*/, const Tree& /*tree*/, Dune::\n-PriorityTag<2>)\n-139 {\n-140 /* do nothing */\n-141 }\n-142\n-143 template<class C, class Tree,\n-144 class = decltype(std::declval<C>().resize(0u))>\n-145 static void resizeImpl(C& container, const Tree& tree, Dune::\n-PriorityTag<1>)\n-146 {\n-147 container.resize(tree.degree());\n-148 Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](auto i) {\n-149 resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});\n-150 });\n-151 }\n-152\n-153 template<class C, class Tree>\n-154 static void resizeImpl(C& container, const Tree& tree, Dune::\n-PriorityTag<0>)\n-155 {\n-156 Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](auto i) {\n-157 resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});\n-158 });\n+_\b1_\b2_\b9 typedef typename F::type _\bt_\by_\bp_\be;\n+130 };\n+131\n+133 template<typename F>\n+_\b1_\b3_\b4 struct _\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n+135 {\n+_\b1_\b3_\b6 typedef F _\bt_\by_\bp_\be;\n+137 };\n+138\n+140 template<typename F>\n+_\b1_\b4_\b1 struct _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+142 {\n+143 typedef typename std::conditional<\n+144 std::is_base_of<meta_function,F>::value,\n+145 _\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bF_\b>,\n+146 _\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b<_\bF_\b>\n+_\b1_\b4_\b7 >::type::type _\bt_\by_\bp_\be;\n+148 };\n+149\n+_\b1_\b5_\b0 namespace impl {\n+151\n+152 // Check if type is a or is derived from one of the tree path types\n+153\n+154 // Default overload for types not representing a tree path\n+_\b1_\b5_\b5 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(void*)\n+156 -> std::false_type\n+157 {\n+158 return std::false_type();\n 159 }\n 160\n-161 template<class T>\n-162 using TypeTreeConcept = decltype((\n-163 std::declval<T>().degree(),\n-164 T::isLeaf,\n-165 T::isPower,\n-166 T::isComposite,\n-167 true));\n+161 // Overload for instances of HybridTreePath<...>\n+162 template<class... I>\n+_\b1_\b6_\b3 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b._\b._\b._\b>*)\n+164 -> std::true_type\n+165 {\n+166 return std::true_type();\n+167 }\n 168\n-169 public:\n-_\b1_\b7_\b1 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(Container&& container) :\n-172 container_(std::move(container))\n-173 {}\n-174\n-176 template <class Tree, TypeTreeConcept<Tree> = true>\n-_\b1_\b7_\b7 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(const Tree& tree) :\n-178 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd()\n-179 {\n-180 this->resize(tree);\n-181 }\n-182\n-184 template <class C = Container,\n-185 std::enable_if_t<std::is_default_constructible_v<C>, bool> = true>\n-_\b1_\b8_\b6 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd() :\n-187 container_()\n-188 {}\n-189\n-190 template<class... T>\n-_\b1_\b9_\b1 decltype(auto) operator[](const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path) const\n-192 {\n-193 return accessByTreePath(container_, path);\n-194 }\n-195\n-196 template<class... T>\n-_\b1_\b9_\b7 decltype(auto) operator[](const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path)\n-198 {\n-199 return accessByTreePath(container_, path);\n-200 }\n-201\n-203 template<class Tree, TypeTreeConcept<Tree> = true>\n-_\b2_\b0_\b4 void _\br_\be_\bs_\bi_\bz_\be(const Tree& tree)\n-205 {\n-206 resizeImpl(container_, tree, Dune::PriorityTag<5>{});\n-207 }\n-208\n-_\b2_\b0_\b9 const Container& _\bd_\ba_\bt_\ba() const\n-210 {\n-211 return container_;\n-212 }\n-213\n-_\b2_\b1_\b4 Container& _\bd_\ba_\bt_\ba()\n-215 {\n-216 return container_;\n-217 }\n-218\n-219 private:\n-220 Container container_;\n-221 };\n-222\n-223 template<class Container>\n-_\b2_\b2_\b4 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(Container&& container)\n-225 {\n-226 return _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b<_\bs_\bt_\bd_\b:_\b:_\bd_\be_\bc_\ba_\by_\b__\bt_\b<_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b>>(std::\n-forward<Container>(container));\n-227 }\n-228\n-229 /*\n-230 * \\brief A simple lambda for creating default constructible values from a\n-node\n-231 *\n-232 * This simply returns LeafToValue<Node>{} for a given Node. It's needed\n-233 * because using a lambda expression in a using declaration is not allowed\n-234 * because it's an unevaluated context.\n-235 */\n-236 template<template<class Node> class LeafToValue>\n-_\b2_\b3_\b7 struct _\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be\n-238 {\n-239 template<class Node>\n-_\b2_\b4_\b0 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node) const\n-241 {\n-242 return LeafToValue<Node>{};\n-243 }\n-244 };\n-245\n-246 } // namespace Detail\n-247\n-267 template<class Tree, class LeafToValue>\n-_\b2_\b6_\b8 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(const Tree& tree, LeafToValue&& leafToValue)\n-269 {\n-270 auto f = std::ref(leafToValue);\n-271 auto factory = _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\be_\bc_\bl_\bt_\by_\bp_\be_\b(_\bf_\b)_\b>(f);\n-272 return Detail::makeTreeContainerVectorBackend(factory(tree));\n-273 }\n-274\n-290 template<class Value, class Tree>\n-_\b2_\b9_\b1 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(const Tree& tree)\n-292 {\n-293 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(tree, [](const auto&) {return Value{};});\n-294 }\n-295\n-299 template<class Value, class Tree>\n-_\b3_\b0_\b0 using _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t<decltype(makeTreeContainer<Value>\n-(std::declval<const Tree&>()))>;\n-301\n-305 template<template<class Node> class LeafToValue, class Tree>\n-_\b3_\b0_\b6 using _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t<decltype(makeTreeContainer(std::\n-declval<const Tree&>(), std::declval<Detail::\n-LeafToDefaultConstructibleValue<LeafToValue>>()))>;\n-307\n-309\n-310 } // namespace TypeTree\n-311} //namespace Dune\n-312\n-313#endif // DUNE_TYPETREE_TREECONTAINER_HH\n+169 }\n+170\n+181 template<class T>\n+_\b1_\b8_\b2 struct _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh :\n+183 public decltype(impl::isTreePath((typename std::decay<T>::type*)(nullptr)))\n+184 {};\n+185\n+192 template<class T>\n+_\b1_\b9_\b3 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T&)\n+194 -> _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b>\n+195 {\n+196 return _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b>();\n+197 }\n+198\n+199\n+200 } // end namespace TypeTree\n+201} // end namespace Dune\n+202\n+203#endif // DUNE_TYPETREE_TYPETRAITS_HH\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n _\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-auto makeTreeContainer(const Tree &tree, LeafToValue &&leafToValue)\n-Create container havin the same structure as the given tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-std::decay_t< decltype(makeTreeContainer< Value >(std::declval< const Tree & >\n-()))> UniformTreeContainer\n-Alias to container type generated by makeTreeContainer for given tree type and\n-uniform value type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:300\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-std::decay_t< decltype(makeTreeContainer(std::declval< const Tree & >(), std::\n-declval< Detail::LeafToDefaultConstructibleValue< LeafToValue > >()))>\n-TreeContainer\n-Alias to container type generated by makeTreeContainer for give tree type and\n-when using LeafToValue ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-std::size_t degree(const Node &node)\n-Returns the degree of node as run time information.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+typename std::decay_t< Node >::NodeTag NodeTag\n+Returns the node tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg\n+typename std::decay_t< T >::ImplementationTag ImplementationTag\n+Returns the implementation tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:74\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-auto makeTreeContainerVectorBackend(Container &&container)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-auto operator()(const Node &node)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-ContainerFactory(LeafToValue leafToValue)\n-Create ContainerFactory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Tree &tree)\n-Resize the (nested) container depending on the degree of the tree nodes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bd_\ba_\bt_\ba\n-Container & data()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bd_\ba_\bt_\ba\n-const Container & data() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-TreeContainerVectorBackend(Container &&container)\n-Move the passed container into the internal storage.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-TreeContainerVectorBackend()\n-Default constructor. The stored container might need to be resized before\n-usage.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n-TreeContainerVectorBackend(const Tree &tree)\n-Default construct the container and perform a resize depending on the tree-node\n-degrees.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-auto operator()(const Node &node) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto isTreePath(const T &) -> IsTreePath< T >\n+Check if given object represents a tree path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bc_\bl_\bp_\bt_\br\n+T * declptr()\n+Helper function for generating a pointer to a value of type T in an unevaluated\n+operand setting.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto isTreePath(void *) -> std::false_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:155\n _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n A hybrid version of TreePath that supports both compile time and run time\n indices.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be_\b<_\b _\bT_\b0_\b,_\b _\bT_\b._\b._\b._\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+T0 type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static constexpr bool value\n+True if class T defines a NodeTag.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n+static yes test(NodeTag< X > *)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n+static no test(...)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[2]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n+static maybe< std::is_base_of< V, NodeTag< X > >::value > test(NodeTag< X > *a)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static constexpr bool value\n+True if class T defines a NodeTag of type V.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n+static no test(...)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[N+1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[2]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n+static yes test(ImplementationTag< X > *)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n+static no test(...)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static constexpr bool value\n+True if class T defines an ImplementationTag.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[2]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n+static maybe< std::is_base_of< V, ImplementationTag< X > >::value > test\n+(ImplementationTag< X > *a)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n+static no test(...)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static constexpr bool value\n+True if class T defines an ImplementationTag of type V.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[N+1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[2]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n+char dummy[1]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd_\b:_\b:_\bt_\by_\bp_\be\n+void type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Marker tag declaring a meta function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+Helper meta function to delay evaluation of F.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\bt_\by_\bp_\be\n+F::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n+Identity function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n+F type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Meta function that evaluates its argument iff it inherits from meta_function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n+std::conditional< std::is_base_of< meta_function, F >::value, lazy_evaluate< F\n+>, lazy_identity< F > >::type::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+Check if type represents a tree path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:184\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00017.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00017.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: powercompositenodetransformationtemplates.hh File Reference</title>\n+<title>dune-typetree: treecontainer.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,44 +71,74 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">powercompositenodetransformationtemplates.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#typedef-members\">Typedefs</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">treecontainer.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <cstddef></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <type_traits></code><br />\n+<code>#include <utility></code><br />\n+<code>#include <functional></code><br />\n+<code>#include <array></code><br />\n+<code>#include <dune/common/indices.hh></code><br />\n+<code>#include <dune/common/hybridutilities.hh></code><br />\n+<code>#include <dune/common/rangeutilities.hh></code><br />\n+<code>#include <dune/common/tuplevector.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n </div>\n <p><a href=\"a00017_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01264.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01372.html\">Dune::TypeTree::Detail::ContainerFactory< LeafToValue ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01268.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01376.html\">Dune::TypeTree::Detail::TreeContainerVectorBackend< Container ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01272.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01276.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01280.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01284.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01380.html\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue< LeafToValue ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:ga3e7a9f48131918fa219eac08f77f7d29\" id=\"r_ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memTemplParams\" colspan=\"2\">template<class Value , class Tree > </td></tr>\n+<tr class=\"memitem:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">Dune::TypeTree::UniformTreeContainer</a> = std::decay_t< decltype(<a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>< Value >(std::declval< const Tree & >()))></td></tr>\n+<tr class=\"memdesc:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Alias to container type generated by makeTreeContainer for given tree type and uniform value type. <br /></td></tr>\n+<tr class=\"separator:ga3e7a9f48131918fa219eac08f77f7d29\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gab7535d1bef6c77c758247e58c779f9b2\" id=\"r_gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memTemplParams\" colspan=\"2\">template<template< class Node > class LeafToValue, class Tree > </td></tr>\n+<tr class=\"memitem:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">Dune::TypeTree::TreeContainer</a> = std::decay_t< decltype(<a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(std::declval< const Tree & >(), std::declval< <a class=\"el\" href=\"a01380.html\">Detail::LeafToDefaultConstructibleValue</a>< LeafToValue > >()))></td></tr>\n+<tr class=\"memdesc:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Alias to container type generated by makeTreeContainer for give tree type and when using LeafToValue to create values. <br /></td></tr>\n+<tr class=\"separator:gab7535d1bef6c77c758247e58c779f9b2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a416f76c3875a856cc26f49af3cd7c56a\" id=\"r_a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memTemplParams\" colspan=\"2\">template<class Container > </td></tr>\n+<tr class=\"memitem:a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">Dune::TypeTree::Detail::makeTreeContainerVectorBackend</a> (Container &&container)</td></tr>\n+<tr class=\"separator:a416f76c3875a856cc26f49af3cd7c56a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga241c26f7d26dc7428cce30566d41c085\" id=\"r_ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class LeafToValue > </td></tr>\n+<tr class=\"memitem:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">Dune::TypeTree::makeTreeContainer</a> (const Tree &tree, LeafToValue &&leafToValue)</td></tr>\n+<tr class=\"memdesc:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create container havin the same structure as the given tree. <br /></td></tr>\n+<tr class=\"separator:ga241c26f7d26dc7428cce30566d41c085\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaeba09096f7d6149b08123f545eaccc85\" id=\"r_gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memTemplParams\" colspan=\"2\">template<class Value , class Tree > </td></tr>\n+<tr class=\"memitem:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00089.html#gaeba09096f7d6149b08123f545eaccc85\">Dune::TypeTree::makeTreeContainer</a> (const Tree &tree)</td></tr>\n+<tr class=\"memdesc:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create container havin the same structure as the given tree. <br /></td></tr>\n+<tr class=\"separator:gaeba09096f7d6149b08123f545eaccc85\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,37 +1,62 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-powercompositenodetransformationtemplates.hh File Reference\n-#include <cstddef>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+treecontainer.hh File Reference\n+#include <type_traits>\n+#include <utility>\n+#include <functional>\n+#include <array>\n+#include <dune/common/indices.hh>\n+#include <dune/common/hybridutilities.hh>\n+#include <dune/common/rangeutilities.hh>\n+#include <dune/common/tuplevector.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\be_\ba_\bf_\bT_\bo_\bV_\ba_\bl_\bu_\be_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b<_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be_\b<_\b _\bL_\be_\ba_\bf_\bT_\bo_\bV_\ba_\bl_\bu_\be_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template<class Value , class Tree >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t< decltype\n+ (_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br< Value >(std::declval< const Tree & >()))>\n+\u00a0 Alias to container type generated by makeTreeContainer for given tree\n+ type and uniform value type.\n+\u00a0\n+template<template< class Node > class LeafToValue, class Tree >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t< decltype(_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+ (std::declval< const Tree & >(), std::declval< _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:\n+ _\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be< LeafToValue > >()))>\n+\u00a0 Alias to container type generated by makeTreeContainer for give tree\n+ type and when using LeafToValue to create values.\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<class Container >\n+auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd (Container\n+ &&container)\n+\u00a0\n+template<class Tree , class LeafToValue >\n+auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br (const Tree &tree, LeafToValue\n+ &&leafToValue)\n+\u00a0 Create container havin the same structure as the given tree.\n+\u00a0\n+template<class Value , class Tree >\n+auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br (const Tree &tree)\n+\u00a0 Create container havin the same structure as the given tree.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00017_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00017_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: powercompositenodetransformationtemplates.hh Source File</title>\n+<title>dune-typetree: treecontainer.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,91 +74,333 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">powercompositenodetransformationtemplates.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">treecontainer.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00017.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00022\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01264.html\"> 22</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a></div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> {</div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00025\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01268.html\"> 25</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01268.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> {</div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\"> 27</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC,StaticDegree<SourceNode>::value> <a class=\"code hl_typedef\" href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00033\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01272.html\"> 33</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00036\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01276.html\"> 36</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01276.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\"> 38</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC> <a class=\"code hl_typedef\" href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00043\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01280.html\"> 43</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01284.html\"> 46</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01284.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\"> 48</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC...> <a class=\"code hl_typedef\" href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <utility></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <functional></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/rangeutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/tuplevector.hh></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">namespace </span>Detail {</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"comment\"> * \\brief A factory class creating a hybrid container compatible with a type tree</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span><span class=\"comment\"> *</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"comment\"> * This class allows to create a nested hybrid container having the same structure</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"comment\"> * as a given type tree. Power nodes are represented as std::array's while composite</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"comment\"> * nodes are represented as Dune::TupleVector's. The stored values for the leaf nodes</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"comment\"> * are creating using a given predicate. Once created, the factory provides an</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"comment\"> * operator() creating the container for the tree given as argument.</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"comment\"> *</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"comment\"> * \\tparam LeafToValue Type of a predicate that determines the stored values at the leafs</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> LeafToValue></div>\n+<div class=\"foldopen\" id=\"foldopen00038\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html\"> 38</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01372.html\">ContainerFactory</a></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keyword\">using </span>DynamicDegreeConcept = <span class=\"keyword\">decltype</span>((std::size_t(std::declval<N>().<a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>()), <span class=\"keyword\">true</span>));</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">using </span>StaticDegreeConcept = <span class=\"keyword\">decltype</span>((std::integral_constant<std::size_t, N::degree()>{}, <span class=\"keyword\">true</span>));</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> N></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">using </span>DynamicChildAccessConcept = <span class=\"keyword\">decltype</span>((std::declval<N>().child(0u), <span class=\"keyword\">true</span>));</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\"> 58</a></span> <a class=\"code hl_function\" href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\">ContainerFactory</a>(LeafToValue leafToValue) :</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> leafToValue_(leafToValue)</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\"> 63</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node)</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> {</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keywordflow\">return</span> (*<span class=\"keyword\">this</span>)(node, Dune::PriorityTag<5>{});</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> std::enable_if_t<Node::isLeaf, bool> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<4>)</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keywordflow\">return</span> leafToValue_(node);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> StaticDegreeConcept<Node> = <span class=\"keyword\">true</span>,</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> DynamicChildAccessConcept<Node> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<3>)</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span> Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... indices) {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> std::array{(*this)(node.child(indices))...};</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }, std::make_index_sequence<std::size_t(Node::degree())>());</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> DynamicDegreeConcept<Node> = <span class=\"keyword\">true</span>,</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> DynamicChildAccessConcept<Node> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<2>)</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">using </span>TransformedChild = <span class=\"keyword\">decltype</span>((*this)(node.child(0)));</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> std::vector<TransformedChild> container;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> container.reserve(node.degree());</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keywordflow\">for</span> (std::size_t i = 0; i < node.degree(); ++i)</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> container.emplace_back((*<span class=\"keyword\">this</span>)(node.child(i)));</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keywordflow\">return</span> container;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> }</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node,</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> StaticDegreeConcept<Node> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">operator()</a>(<span class=\"keyword\">const</span> Node& node, Dune::PriorityTag<1>)</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keywordflow\">return</span> Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... indices) {</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> Dune::makeTupleVector((*<span class=\"keyword\">this</span>)(node.child(indices))...);</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }, std::make_index_sequence<std::size_t(Node::degree())>());</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> }</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> LeafToValue leafToValue_;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span><span class=\"comment\"> * \\brief Wrap nested container to provide a VectorBackend</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Container></div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html\"> 118</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend</a></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> C></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) accessByTreePath(C&& container, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<></a>& path)</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> {</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keywordflow\">return</span> container;</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> }</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class</span>... T></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) accessByTreePath(C&& container, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path)</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">auto</span> head = path[Dune::Indices::_0];</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">auto</span> tailPath = Dune::unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(path[Dune::index_constant<i+1>{}]...);</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> }, std::make_index_sequence<<span class=\"keyword\">sizeof</span>...(T)-1>());</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keywordflow\">return</span> accessByTreePath(container[head], tailPath);</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> }</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class </span>Tree,</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> std::enable_if_t<Tree::isLeaf, bool> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& <span class=\"comment\">/*container*/</span>, <span class=\"keyword\">const</span> Tree& <span class=\"comment\">/*tree*/</span>, Dune::PriorityTag<2>)</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"comment\">/* do nothing */</span></div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> }</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>C, <span class=\"keyword\">class </span>Tree,</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keyword\">class </span>= <span class=\"keyword\">decltype</span>(std::declval<C>().resize(0u))></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& container, <span class=\"keyword\">const</span> Tree& tree, Dune::PriorityTag<1>)</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> {</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> container.resize(tree.degree());</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> });</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> C, <span class=\"keyword\">class</span> Tree></div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> resizeImpl(C& container, <span class=\"keyword\">const</span> Tree& tree, Dune::PriorityTag<0>)</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> {</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> });</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> }</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keyword\">using </span>TypeTreeConcept = <span class=\"keyword\">decltype</span>((</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> std::declval<T>().degree(),</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> T::isLeaf,</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> T::isPower,</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> T::isComposite,</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">true</span>));</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\"> 171</a></span> <a class=\"code hl_function\" href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\">TreeContainerVectorBackend</a>(Container&& container) :</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> container_(std::move(container))</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Tree, TypeTreeConcept<Tree> = true></div>\n+<div class=\"foldopen\" id=\"foldopen00177\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\"> 177</a></span> <a class=\"code hl_function\" href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\">TreeContainerVectorBackend</a>(<span class=\"keyword\">const</span> Tree& tree) :</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend</a>()</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> {</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> this->resize(tree);</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>C = Container,</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> std::enable_if_t<std::is_default_constructible_v<C>, <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\"> 186</a></span> <a class=\"code hl_function\" href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\">TreeContainerVectorBackend</a>() :</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> container_()</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> </div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00191\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a12a12acc07934495a54732791e1dbf7e\"> 191</a></span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <span class=\"keyword\">operator</span>[](<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> {</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keywordflow\">return</span> accessByTreePath(container_, path);</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00197\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a3041c80b57522f971128eeba7411c3aa\"> 197</a></span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <span class=\"keyword\">operator</span>[](<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& path)</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> <span class=\"keywordflow\">return</span> accessByTreePath(container_, path);</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, TypeTreeConcept<Tree> = true></div>\n+<div class=\"foldopen\" id=\"foldopen00204\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\"> 204</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\">resize</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> resizeImpl(container_, tree, Dune::PriorityTag<5>{});</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00209\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\"> 209</a></span> <span class=\"keyword\">const</span> Container& <a class=\"code hl_function\" href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\">data</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> <span class=\"keywordflow\">return</span> container_;</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\"> 214</a></span> Container& <a class=\"code hl_function\" href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\">data</a>()</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"keywordflow\">return</span> container_;</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> Container container_;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Container></div>\n+<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\"> 224</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">makeTreeContainerVectorBackend</a>(Container&& container)</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> {</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01376.html\">TreeContainerVectorBackend<std::decay_t<Container></a>>(std::forward<Container>(container));</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span><span class=\"comment\"> * \\brief A simple lambda for creating default constructible values from a node</span></div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span><span class=\"comment\"> *</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span><span class=\"comment\"> * This simply returns LeafToValue<Node>{} for a given Node. It's needed</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span><span class=\"comment\"> * because using a lambda expression in a using declaration is not allowed</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span><span class=\"comment\"> * because it's an unevaluated context.</span></div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <span class=\"keyword\">template</span><<span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node> <span class=\"keyword\">class </span>LeafToValue></div>\n+<div class=\"foldopen\" id=\"foldopen00237\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01380.html\"> 237</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01380.html\">LeafToDefaultConstructibleValue</a></div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> {</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00240\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\"> 240</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\">operator()</a>(<span class=\"keyword\">const</span> Node& node)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keywordflow\">return</span> LeafToValue<Node>{};</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> </div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> } <span class=\"comment\">// namespace Detail</span></div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> </div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> LeafToValue></div>\n+<div class=\"foldopen\" id=\"foldopen00268\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\"> 268</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(<span class=\"keyword\">const</span> Tree& tree, LeafToValue&& leafToValue)</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> {</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">auto</span> f = std::ref(leafToValue);</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <span class=\"keyword\">auto</span> factory = <a class=\"code hl_class\" href=\"a01372.html\">Detail::ContainerFactory<decltype(f)></a>(f);</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keywordflow\">return</span> Detail::makeTreeContainerVectorBackend(factory(tree));</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Value, <span class=\"keyword\">class</span> Tree></div>\n+<div class=\"foldopen\" id=\"foldopen00291\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#gaeba09096f7d6149b08123f545eaccc85\"> 291</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> {</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">makeTreeContainer</a>(tree, [](<span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>&) {<span class=\"keywordflow\">return</span> Value{};});</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Value, <span class=\"keyword\">class</span> Tree></div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\"> 300</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">UniformTreeContainer</a> = std::decay_t<decltype(makeTreeContainer<Value>(std::declval<const Tree&>()))>;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> </div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">template</span><<span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node> <span class=\"keyword\">class </span>LeafToValue, <span class=\"keyword\">class </span>Tree></div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\"> 306</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">TreeContainer</a> = std::decay_t<decltype(makeTreeContainer(std::declval<const Tree&>(), std::declval<Detail::LeafToDefaultConstructibleValue<LeafToValue>>()))>;</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> </div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> </div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TREECONTAINER_HH</span></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00089_html_ga241c26f7d26dc7428cce30566d41c085\"><div class=\"ttname\"><a href=\"a00089.html#ga241c26f7d26dc7428cce30566d41c085\">Dune::TypeTree::makeTreeContainer</a></div><div class=\"ttdeci\">auto makeTreeContainer(const Tree &tree, LeafToValue &&leafToValue)</div><div class=\"ttdoc\">Create container havin the same structure as the given tree.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:268</div></div>\n+<div class=\"ttc\" id=\"aa00089_html_ga3e7a9f48131918fa219eac08f77f7d29\"><div class=\"ttname\"><a href=\"a00089.html#ga3e7a9f48131918fa219eac08f77f7d29\">Dune::TypeTree::UniformTreeContainer</a></div><div class=\"ttdeci\">std::decay_t< decltype(makeTreeContainer< Value >(std::declval< const Tree & >()))> UniformTreeContainer</div><div class=\"ttdoc\">Alias to container type generated by makeTreeContainer for given tree type and uniform value type.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:300</div></div>\n+<div class=\"ttc\" id=\"aa00089_html_gab7535d1bef6c77c758247e58c779f9b2\"><div class=\"ttname\"><a href=\"a00089.html#gab7535d1bef6c77c758247e58c779f9b2\">Dune::TypeTree::TreeContainer</a></div><div class=\"ttdeci\">std::decay_t< decltype(makeTreeContainer(std::declval< const Tree & >(), std::declval< Detail::LeafToDefaultConstructibleValue< LeafToValue > >()))> TreeContainer</div><div class=\"ttdoc\">Alias to container type generated by makeTreeContainer for give tree type and when using LeafToValue ...</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:306</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><div class=\"ttname\"><a href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a></div><div class=\"ttdeci\">std::size_t degree(const Node &node)</div><div class=\"ttdoc\">Returns the degree of node as run time information.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:79</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01264_html\"><div class=\"ttname\"><a href=\"a01264.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:23</div></div>\n-<div class=\"ttc\" id=\"aa01268_html\"><div class=\"ttname\"><a href=\"a01268.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:26</div></div>\n-<div class=\"ttc\" id=\"aa01268_html_a2ff86d75565a9d1d1acdd34a12b8cb55\"><div class=\"ttname\"><a href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\">Dune::TypeTree::GenericPowerNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC, StaticDegree< SourceNode >::value > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:27</div></div>\n-<div class=\"ttc\" id=\"aa01272_html\"><div class=\"ttname\"><a href=\"a01272.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:34</div></div>\n-<div class=\"ttc\" id=\"aa01276_html\"><div class=\"ttname\"><a href=\"a01276.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:37</div></div>\n-<div class=\"ttc\" id=\"aa01276_html_adaa8a341b0101e7e5336654133d47c0e\"><div class=\"ttname\"><a href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:38</div></div>\n-<div class=\"ttc\" id=\"aa01280_html\"><div class=\"ttname\"><a href=\"a01280.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:44</div></div>\n-<div class=\"ttc\" id=\"aa01284_html\"><div class=\"ttname\"><a href=\"a01284.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:47</div></div>\n-<div class=\"ttc\" id=\"aa01284_html_ae9c1b1f00bb0a1ee622311dff8460ef1\"><div class=\"ttname\"><a href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC... > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:48</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a416f76c3875a856cc26f49af3cd7c56a\"><div class=\"ttname\"><a href=\"a00102.html#a416f76c3875a856cc26f49af3cd7c56a\">Dune::TypeTree::Detail::makeTreeContainerVectorBackend</a></div><div class=\"ttdeci\">auto makeTreeContainerVectorBackend(Container &&container)</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:224</div></div>\n+<div class=\"ttc\" id=\"aa01372_html\"><div class=\"ttname\"><a href=\"a01372.html\">Dune::TypeTree::Detail::ContainerFactory</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:39</div></div>\n+<div class=\"ttc\" id=\"aa01372_html_a0aacb9523b1b7a95a3f445a40808d126\"><div class=\"ttname\"><a href=\"a01372.html#a0aacb9523b1b7a95a3f445a40808d126\">Dune::TypeTree::Detail::ContainerFactory::operator()</a></div><div class=\"ttdeci\">auto operator()(const Node &node)</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:63</div></div>\n+<div class=\"ttc\" id=\"aa01372_html_a98d48631301c7308b5e39fc3dadd3094\"><div class=\"ttname\"><a href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\">Dune::TypeTree::Detail::ContainerFactory::ContainerFactory</a></div><div class=\"ttdeci\">ContainerFactory(LeafToValue leafToValue)</div><div class=\"ttdoc\">Create ContainerFactory.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:58</div></div>\n+<div class=\"ttc\" id=\"aa01376_html\"><div class=\"ttname\"><a href=\"a01376.html\">Dune::TypeTree::Detail::TreeContainerVectorBackend</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:119</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_a0a1f4e2fd03f6cd5fa77152275ba2563\"><div class=\"ttname\"><a href=\"a01376.html#a0a1f4e2fd03f6cd5fa77152275ba2563\">Dune::TypeTree::Detail::TreeContainerVectorBackend::resize</a></div><div class=\"ttdeci\">void resize(const Tree &tree)</div><div class=\"ttdoc\">Resize the (nested) container depending on the degree of the tree nodes.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:204</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_a541f62684e2b8f4072af24a16ff4b815\"><div class=\"ttname\"><a href=\"a01376.html#a541f62684e2b8f4072af24a16ff4b815\">Dune::TypeTree::Detail::TreeContainerVectorBackend::data</a></div><div class=\"ttdeci\">Container & data()</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:214</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_a878c4519c635824ba10ccf41ebfbc0c7\"><div class=\"ttname\"><a href=\"a01376.html#a878c4519c635824ba10ccf41ebfbc0c7\">Dune::TypeTree::Detail::TreeContainerVectorBackend::data</a></div><div class=\"ttdeci\">const Container & data() const</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:209</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_aa5c7b22f3a5474e026210ff852c8c853\"><div class=\"ttname\"><a href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend(Container &&container)</div><div class=\"ttdoc\">Move the passed container into the internal storage.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:171</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_ab004f67841ac86b770cb61a17a75f59c\"><div class=\"ttname\"><a href=\"a01376.html#ab004f67841ac86b770cb61a17a75f59c\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend()</div><div class=\"ttdoc\">Default constructor. The stored container might need to be resized before usage.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:186</div></div>\n+<div class=\"ttc\" id=\"aa01376_html_abd7766f86dea240d851cc17510b5b1f5\"><div class=\"ttname\"><a href=\"a01376.html#abd7766f86dea240d851cc17510b5b1f5\">Dune::TypeTree::Detail::TreeContainerVectorBackend::TreeContainerVectorBackend</a></div><div class=\"ttdeci\">TreeContainerVectorBackend(const Tree &tree)</div><div class=\"ttdoc\">Default construct the container and perform a resize depending on the tree-node degrees.</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:177</div></div>\n+<div class=\"ttc\" id=\"aa01380_html\"><div class=\"ttname\"><a href=\"a01380.html\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue</a></div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:238</div></div>\n+<div class=\"ttc\" id=\"aa01380_html_a0ae3fd8805cbbf281be705c64f8995b7\"><div class=\"ttname\"><a href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue::operator()</a></div><div class=\"ttdeci\">auto operator()(const Node &node) const</div><div class=\"ttdef\"><b>Definition</b> treecontainer.hh:240</div></div>\n+<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,90 +1,367 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-powercompositenodetransformationtemplates.hh\n+treecontainer.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n-7#define DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n+6#ifndef DUNE_TYPETREE_TREECONTAINER_HH\n+7#define DUNE_TYPETREE_TREECONTAINER_HH\n 8\n-9#include <cstddef>\n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be {\n-14 namespace TypeTree {\n-15\n-21 template<typename SourceNode, typename Transformation,\n-template<typename,typename,std::size_t> class TransformedNode>\n-_\b2_\b2 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-23 {\n-24 template<typename TC>\n-_\b2_\b5 struct _\br_\be_\bs_\bu_\bl_\bt\n-26 {\n-_\b2_\b7 typedef TransformedNode<SourceNode,TC,StaticDegree<SourceNode>::value> _\bt_\by_\bp_\be;\n-28 };\n-29 };\n-30\n-31\n-32 template<typename SourceNode, typename Transformation,\n-template<typename,typename> class TransformedNode>\n-_\b3_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-34 {\n-35 template<typename TC>\n-_\b3_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n-37 {\n-_\b3_\b8 typedef TransformedNode<SourceNode,TC> _\bt_\by_\bp_\be;\n-39 };\n-40 };\n-41\n-42 template<typename SourceNode, typename Transformation,\n-template<typename,typename...> class TransformedNode>\n-_\b4_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-44 {\n-45 template<typename... TC>\n-_\b4_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n-47 {\n-_\b4_\b8 typedef TransformedNode<SourceNode,TC...> _\bt_\by_\bp_\be;\n-49 };\n-50 };\n-51\n-53\n-54 } // namespace TypeTree\n-55} //namespace Dune\n-56\n-57#endif // DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+9#include <type_traits>\n+10#include <utility>\n+11#include <functional>\n+12#include <array>\n+13\n+14#include <dune/common/indices.hh>\n+15#include <dune/common/hybridutilities.hh>\n+16#include <dune/common/rangeutilities.hh>\n+17#include <dune/common/tuplevector.hh>\n+18\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be {\n+22 namespace TypeTree {\n+23\n+24 namespace Detail {\n+25\n+26 /*\n+27 * \\brief A factory class creating a hybrid container compatible with a type\n+tree\n+28 *\n+29 * This class allows to create a nested hybrid container having the same\n+structure\n+30 * as a given type tree. Power nodes are represented as std::array's while\n+composite\n+31 * nodes are represented as Dune::TupleVector's. The stored values for the\n+leaf nodes\n+32 * are creating using a given predicate. Once created, the factory provides\n+an\n+33 * operator() creating the container for the tree given as argument.\n+34 *\n+35 * \\tparam LeafToValue Type of a predicate that determines the stored values\n+at the leafs\n+36 */\n+37 template<class LeafToValue>\n+_\b3_\b8 class _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+39 {\n+40 template<class N>\n+41 using DynamicDegreeConcept = decltype((std::size_t(std::declval<N>()._\bd_\be_\bg_\br_\be_\be\n+()), true));\n+42\n+43 template<class N>\n+44 using StaticDegreeConcept = decltype((std::integral_constant<std::size_t,\n+N::degree()>{}, true));\n+45\n+46 template<class N>\n+47 using DynamicChildAccessConcept = decltype((std::declval<N>().child(0u),\n+true));\n+48\n+49 public:\n+50\n+_\b5_\b8 _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(LeafToValue leafToValue) :\n+59 leafToValue_(leafToValue)\n+60 {}\n+61\n+62 template<class Node>\n+_\b6_\b3 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node)\n+64 {\n+65 return (*this)(node, Dune::PriorityTag<5>{});\n+66 }\n+67\n+68 private:\n+69\n+70 template<class Node,\n+71 std::enable_if_t<Node::isLeaf, bool> = true>\n+72 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<4>)\n+73 {\n+74 return leafToValue_(node);\n+75 }\n+76\n+77 template<class Node,\n+78 StaticDegreeConcept<Node> = true,\n+79 DynamicChildAccessConcept<Node> = true>\n+80 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<3>)\n+81 {\n+82 return Dune::unpackIntegerSequence([&](auto... indices) {\n+83 return std::array{(*this)(node.child(indices))...};\n+84 }, std::make_index_sequence<std::size_t(Node::degree())>());\n+85 }\n+86\n+87 template<class Node,\n+88 DynamicDegreeConcept<Node> = true,\n+89 DynamicChildAccessConcept<Node> = true>\n+90 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<2>)\n+91 {\n+92 using TransformedChild = decltype((*this)(node.child(0)));\n+93 std::vector<TransformedChild> container;\n+94 container.reserve(node.degree());\n+95 for (std::size_t i = 0; i < node.degree(); ++i)\n+96 container.emplace_back((*this)(node.child(i)));\n+97 return container;\n+98 }\n+99\n+100 template<class Node,\n+101 StaticDegreeConcept<Node> = true>\n+102 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node, Dune::PriorityTag<1>)\n+103 {\n+104 return Dune::unpackIntegerSequence([&](auto... indices) {\n+105 return Dune::makeTupleVector((*this)(node.child(indices))...);\n+106 }, std::make_index_sequence<std::size_t(Node::degree())>());\n+107 }\n+108\n+109 private:\n+110 LeafToValue leafToValue_;\n+111 };\n+112\n+113\n+114 /*\n+115 * \\brief Wrap nested container to provide a VectorBackend\n+116 */\n+117 template<class Container>\n+_\b1_\b1_\b8 class _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+119 {\n+120 template<class C>\n+121 static constexpr decltype(auto) accessByTreePath(C&& container, const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b>& path)\n+122 {\n+123 return container;\n+124 }\n+125\n+126 template<class C, class... T>\n+127 static constexpr decltype(auto) accessByTreePath(C&& container, const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path)\n+128 {\n+129 auto head = path[Dune::Indices::_0];\n+130 auto tailPath = Dune::unpackIntegerSequence([&](auto... i){\n+131 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(path[Dune::index_constant<i+1>{}]...);\n+132 }, std::make_index_sequence<sizeof...(T)-1>());\n+133 return accessByTreePath(container[head], tailPath);\n+134 }\n+135\n+136 template<class C, class Tree,\n+137 std::enable_if_t<Tree::isLeaf, bool> = true>\n+138 static void resizeImpl(C& /*container*/, const Tree& /*tree*/, Dune::\n+PriorityTag<2>)\n+139 {\n+140 /* do nothing */\n+141 }\n+142\n+143 template<class C, class Tree,\n+144 class = decltype(std::declval<C>().resize(0u))>\n+145 static void resizeImpl(C& container, const Tree& tree, Dune::\n+PriorityTag<1>)\n+146 {\n+147 container.resize(tree.degree());\n+148 Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](auto i) {\n+149 resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});\n+150 });\n+151 }\n+152\n+153 template<class C, class Tree>\n+154 static void resizeImpl(C& container, const Tree& tree, Dune::\n+PriorityTag<0>)\n+155 {\n+156 Dune::Hybrid::forEach(Dune::range(tree.degree()), [&](auto i) {\n+157 resizeImpl(container[i], tree.child(i), Dune::PriorityTag<5>{});\n+158 });\n+159 }\n+160\n+161 template<class T>\n+162 using TypeTreeConcept = decltype((\n+163 std::declval<T>().degree(),\n+164 T::isLeaf,\n+165 T::isPower,\n+166 T::isComposite,\n+167 true));\n+168\n+169 public:\n+_\b1_\b7_\b1 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(Container&& container) :\n+172 container_(std::move(container))\n+173 {}\n+174\n+176 template <class Tree, TypeTreeConcept<Tree> = true>\n+_\b1_\b7_\b7 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(const Tree& tree) :\n+178 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd()\n+179 {\n+180 this->resize(tree);\n+181 }\n+182\n+184 template <class C = Container,\n+185 std::enable_if_t<std::is_default_constructible_v<C>, bool> = true>\n+_\b1_\b8_\b6 _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd() :\n+187 container_()\n+188 {}\n+189\n+190 template<class... T>\n+_\b1_\b9_\b1 decltype(auto) operator[](const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path) const\n+192 {\n+193 return accessByTreePath(container_, path);\n+194 }\n+195\n+196 template<class... T>\n+_\b1_\b9_\b7 decltype(auto) operator[](const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& path)\n+198 {\n+199 return accessByTreePath(container_, path);\n+200 }\n+201\n+203 template<class Tree, TypeTreeConcept<Tree> = true>\n+_\b2_\b0_\b4 void _\br_\be_\bs_\bi_\bz_\be(const Tree& tree)\n+205 {\n+206 resizeImpl(container_, tree, Dune::PriorityTag<5>{});\n+207 }\n+208\n+_\b2_\b0_\b9 const Container& _\bd_\ba_\bt_\ba() const\n+210 {\n+211 return container_;\n+212 }\n+213\n+_\b2_\b1_\b4 Container& _\bd_\ba_\bt_\ba()\n+215 {\n+216 return container_;\n+217 }\n+218\n+219 private:\n+220 Container container_;\n+221 };\n+222\n+223 template<class Container>\n+_\b2_\b2_\b4 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd(Container&& container)\n+225 {\n+226 return _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b<_\bs_\bt_\bd_\b:_\b:_\bd_\be_\bc_\ba_\by_\b__\bt_\b<_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b>>(std::\n+forward<Container>(container));\n+227 }\n+228\n+229 /*\n+230 * \\brief A simple lambda for creating default constructible values from a\n+node\n+231 *\n+232 * This simply returns LeafToValue<Node>{} for a given Node. It's needed\n+233 * because using a lambda expression in a using declaration is not allowed\n+234 * because it's an unevaluated context.\n+235 */\n+236 template<template<class Node> class LeafToValue>\n+_\b2_\b3_\b7 struct _\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be\n+238 {\n+239 template<class Node>\n+_\b2_\b4_\b0 auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const Node& node) const\n+241 {\n+242 return LeafToValue<Node>{};\n+243 }\n+244 };\n+245\n+246 } // namespace Detail\n+247\n+267 template<class Tree, class LeafToValue>\n+_\b2_\b6_\b8 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(const Tree& tree, LeafToValue&& leafToValue)\n+269 {\n+270 auto f = std::ref(leafToValue);\n+271 auto factory = _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\be_\bc_\bl_\bt_\by_\bp_\be_\b(_\bf_\b)_\b>(f);\n+272 return Detail::makeTreeContainerVectorBackend(factory(tree));\n+273 }\n+274\n+290 template<class Value, class Tree>\n+_\b2_\b9_\b1 auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(const Tree& tree)\n+292 {\n+293 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br(tree, [](const auto&) {return Value{};});\n+294 }\n+295\n+299 template<class Value, class Tree>\n+_\b3_\b0_\b0 using _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t<decltype(makeTreeContainer<Value>\n+(std::declval<const Tree&>()))>;\n+301\n+305 template<template<class Node> class LeafToValue, class Tree>\n+_\b3_\b0_\b6 using _\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br = std::decay_t<decltype(makeTreeContainer(std::\n+declval<const Tree&>(), std::declval<Detail::\n+LeafToDefaultConstructibleValue<LeafToValue>>()))>;\n+307\n+309\n+310 } // namespace TypeTree\n+311} //namespace Dune\n+312\n+313#endif // DUNE_TYPETREE_TREECONTAINER_HH\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+auto makeTreeContainer(const Tree &tree, LeafToValue &&leafToValue)\n+Create container havin the same structure as the given tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+std::decay_t< decltype(makeTreeContainer< Value >(std::declval< const Tree & >\n+()))> UniformTreeContainer\n+Alias to container type generated by makeTreeContainer for given tree type and\n+uniform value type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:300\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+std::decay_t< decltype(makeTreeContainer(std::declval< const Tree & >(), std::\n+declval< Detail::LeafToDefaultConstructibleValue< LeafToValue > >()))>\n+TreeContainer\n+Alias to container type generated by makeTreeContainer for give tree type and\n+when using LeafToValue ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+std::size_t degree(const Node &node)\n+Returns the degree of node as run time information.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< SourceNode, TC, StaticDegree< SourceNode >::value > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< SourceNode, TC > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< SourceNode, TC... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+auto makeTreeContainerVectorBackend(Container &&container)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+auto operator()(const Node &node)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+ContainerFactory(LeafToValue leafToValue)\n+Create ContainerFactory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Tree &tree)\n+Resize the (nested) container depending on the degree of the tree nodes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bd_\ba_\bt_\ba\n+Container & data()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bd_\ba_\bt_\ba\n+const Container & data() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+TreeContainerVectorBackend(Container &&container)\n+Move the passed container into the internal storage.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+TreeContainerVectorBackend()\n+Default constructor. The stored container might need to be resized before\n+usage.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\be_\be_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\bB_\ba_\bc_\bk_\be_\bn_\bd\n+TreeContainerVectorBackend(const Tree &tree)\n+Default construct the container and perform a resize depending on the tree-node\n+degrees.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bL_\be_\ba_\bf_\bT_\bo_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bC_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bi_\bb_\bl_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+auto operator()(const Node &node) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treecontainer.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+A hybrid version of TreePath that supports both compile time and run time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00020.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00020.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: transformation.hh File Reference</title>\n+<title>dune-typetree: transformationutilities.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -69,55 +69,21 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">transformation.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">transformationutilities.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <array></code><br />\n-<code>#include <tuple></code><br />\n-<code>#include <memory></code><br />\n-<code>#include <utility></code><br />\n-<code>#include <dune/common/hybridutilities.hh></code><br />\n-<code>#include <dune/common/exceptions.hh></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code><br />\n </div>\n <p><a href=\"a00020_source.html\">Go to the source code of this file.</a></p>\n-<table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01364.html\">Dune::TypeTree::TransformTree< SourceTree, Transformation, Tag, recursive ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Transform a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01364.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n-Namespaces</h2></td></tr>\n-<tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:ga48cffe31075a96776d284a184097a2aa\" id=\"r_ga48cffe31075a96776d284a184097a2aa\"><td class=\"memTemplParams\" colspan=\"2\">template<typename SourceNode , typename Transformation , typename Tag > </td></tr>\n-<tr class=\"memitem:ga48cffe31075a96776d284a184097a2aa\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">Dune::TypeTree::registerNodeTransformation</a> (SourceNode *, Transformation *, Tag *)</td></tr>\n-<tr class=\"memdesc:ga48cffe31075a96776d284a184097a2aa\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Register transformation descriptor to transform SourceNode with Transformation. <br /></td></tr>\n-<tr class=\"separator:ga48cffe31075a96776d284a184097a2aa\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,39 +1,12 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-transformation.hh File Reference\n-#include <array>\n-#include <tuple>\n-#include <memory>\n-#include <utility>\n-#include <dune/common/hybridutilities.hh>\n-#include <dune/common/exceptions.hh>\n-#include <dune/common/typetraits.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+transformationutilities.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\ba_\bg_\b,\n- _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be_\b _\b>\n-\u00a0 Transform a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename SourceNode , typename Transformation , typename Tag >\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn (SourceNode *, Transformation\n- *, Tag *)\n-\u00a0 Register transformation descriptor to transform SourceNode with\n- Transformation.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00020_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00020_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: transformation.hh Source File</title>\n+<title>dune-typetree: transformationutilities.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,512 +74,31 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">transformation.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">transformationutilities.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00020.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <utility></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00044.html\">dune/typetree/typetraits.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> Tag></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\"> 54</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">registerNodeTransformation</a>(SourceNode*, Transformation*, Tag*);</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span><span class=\"preprocessor\">#else </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Tag></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">struct </span>LookupNodeTransformation</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> {</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">registerNodeTransformation</a>(declptr<S>(),declptr<T>(),declptr<Tag>())) lookup_type;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01548.html\">evaluate_if_meta_function</a><</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> lookup_type</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">static_assert</span>((!std::is_same<type,void>::value), <span class=\"stringliteral\">"Unable to find valid transformation descriptor"</span>);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> };</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceTree, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> Tag = StartTag, <span class=\"keywordtype\">bool</span> recursive = true></div>\n-<div class=\"foldopen\" id=\"foldopen00095\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html\"> 95</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01364.html\">TransformTree</a></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<SourceTree,Transformation,typename SourceTree::ImplementationTag>::type NodeTransformation;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"comment\">// the type of the new tree that will result from this transformation</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive>::transformed_type transformed_type;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"comment\">// the storage type of the new tree that will result from this transformation</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive>::transformed_storage_type transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\"> 111</a></span> <span class=\"keyword\">typedef</span> transformed_type <a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\"> 113</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a> <a class=\"code hl_typedef\" href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\">Type</a>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\"> 116</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> SourceTree& s, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> {</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(s,t);</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00122\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\"> 122</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\">transform</a>(<span class=\"keyword\">const</span> SourceTree& s, Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> {</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(s,t);</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\"> 128</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\">transform</a>(std::shared_ptr<const SourceTree> sp, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> {</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(sp,t);</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\"> 134</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\">transform</a>(std::shared_ptr<const SourceTree> sp, Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(sp,t);</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\"> 141</a></span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const SourceTree> sp, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">::transform_storage</a>(sp,t);</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\"> 148</a></span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\">transform_storage</a>(std::shared_ptr<const SourceTree> sp, Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> {</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">::transform_storage</a>(sp,t);</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span><span class=\"preprocessor\">#ifndef DOXYGEN </span><span class=\"comment\">// internal per-node implementations of the transformation algorithm</span></div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"comment\">// handle a leaf node - this is easy</span></div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keywordtype\">bool</span> recursive></div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keyword\">struct </span>TransformTree<S,T,LeafNodeTag,recursive></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// get transformed type from specification</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,ImplementationTag<S>><a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">::type</a> NodeTransformation;</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_type transformed_type;</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_storage_type transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, T& t)</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> {</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> }</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> {</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> }</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(std::shared_ptr<const S> sp, T& t)</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> {</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> }</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, T& t)</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> {</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> }</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> }</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> };</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> <span class=\"comment\">// common implementation for non-recursive transformation of non-leaf nodes</span></div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> <span class=\"keyword\">struct </span>TransformTreeNonRecursive</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> {</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> <span class=\"comment\">// get transformed type from specification</span></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,ImplementationTag<S>>::type NodeTransformation;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> </div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_type transformed_type;</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_storage_type transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, T& t)</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> }</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> {</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> }</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const S> sp, T& t)</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> {</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> }</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> {</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> }</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, T& t)</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> {</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> }</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> {</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> }</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span> </div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> };</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"keyword\">namespace </span>Impl {</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> <span class=\"comment\">// Helper class to handle recursive power nodes</span></div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Source, <span class=\"keyword\">class</span> Transformation, <span class=\"keyword\">class</span> Tag></div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keyword\">class </span>RecursivePowerTransformTree</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> {</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> <span class=\"comment\">// We only know two types of tags!</span></div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">static_assert</span>(std::is_same_v<Tag,PowerNodeTag> or std::is_same_v<Tag,DynamicPowerNodeTag>);</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">using </span>ChildType = <span class=\"keyword\">typename</span> Source::ChildType;</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> </div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> <span class=\"comment\">// in case degree is dynamic, provid a vector correctly initialized</span></div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodeStorage></div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> node_storage_provider(<span class=\"keyword\">const</span> std::size_t& degree)</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> {</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keywordflow\">return</span> std::vector<NodeStorage>(degree);</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> }</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"comment\">// in case degree is static, provid an array</span></div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodeStorage, <span class=\"keyword\">class</span> StaticIndex></div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> node_storage_provider(StaticIndex)</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> {</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"keywordflow\">return</span> std::array<NodeStorage,std::size_t(StaticIndex{})>();</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> }</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">// get transformed type from specification</span></div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> <span class=\"comment\">// Handling this transformation in a way that makes the per-node specification easy to write</span></div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"comment\">// is a little involved:</span></div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> <span class=\"comment\">// The problem is that the transformed power node must be parameterized on the transformed child</span></div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> <span class=\"comment\">// type. So we need to transform the child type and pass the transformed child type to an inner</span></div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"comment\">// template of the node transformation struct called result (see example of such a specification</span></div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> <span class=\"comment\">// further down).</span></div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> <span class=\"keyword\">using </span>NodeTransformation = <span class=\"keyword\">typename</span> LookupNodeTransformation<Source,Transformation,ImplementationTag<Source>>::type;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> <span class=\"keyword\">using </span>ChildNodeTransformation = <span class=\"keyword\">typename</span> LookupNodeTransformation<ChildType,Transformation,ImplementationTag<ChildType>>::type;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> <span class=\"comment\">// Since every child is same type, is enough to get transformation once</span></div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">using </span>ChildTreeTransformation = TransformTree<ChildType,</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> NodeTag<ChildType>,</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> ChildNodeTransformation::recursive>;</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"comment\">// Get transformed type of children</span></div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keyword\">using </span>transformed_child_type = <span class=\"keyword\">typename</span> ChildTreeTransformation::transformed_type;</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> <span class=\"keyword\">using </span>transformed_child_storage_type = <span class=\"keyword\">typename</span> ChildTreeTransformation::transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"comment\">// Apply transformation from children to current node</span></div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keyword\">using </span>transformed_type = <span class=\"keyword\">typename</span> NodeTransformation::template result<transformed_child_type>::type;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> <span class=\"keyword\">using </span>transformed_storage_type = <span class=\"keyword\">typename</span> NodeTransformation::template result<transformed_child_type>::storage_type;</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> Source& source, Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> {</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source.degree());</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source.degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> children_storage[k] = ChildTreeTransformation::transform_storage(source.childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> }</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> }</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> Source& source, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> {</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source.degree());</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source.degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> children_storage[k] = ChildTreeTransformation::transform_storage(source.childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> }</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> }</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> </div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const Source> source_ptr, Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source_ptr->degree());</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source_ptr,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> }</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> </div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const Source> source_ptr, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> {</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source_ptr->degree());</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> }</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source_ptr,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> }</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> </div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> <span class=\"comment\">// Transform an instance of source tree ptr.</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const Source> source_ptr, Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> {</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<transformed_child_storage_type>(source_ptr->degree());</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> }</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(source_ptr,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> }</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> <span class=\"comment\">// Transform an instance of source tree ptr.</span></div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const Source> source_ptr, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> {</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<transformed_child_storage_type>(source_ptr->degree());</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> }</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(source_ptr,transformation,children_storage);</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> }</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> </div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> };</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> } <span class=\"comment\">// namespace Impl</span></div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span> <span class=\"comment\">// Recursive version of the PowerNode transformation for static nodes.</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Source, <span class=\"keyword\">typename</span> Transformation></div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">struct </span>TransformTree<Source,Transformation,PowerNodeTag,true></div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> : <span class=\"keyword\">public</span> Impl::RecursivePowerTransformTree<Source,Transformation,PowerNodeTag></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> {};</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> </div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> <span class=\"comment\">// Recursive version of the DynamicPowerNode transformation for static nodes.</span></div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Source, <span class=\"keyword\">typename</span> Transformation></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> <span class=\"keyword\">struct </span>TransformTree<Source,Transformation,DynamicPowerNodeTag,true></div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> : <span class=\"keyword\">public</span> Impl::RecursivePowerTransformTree<Source,Transformation,DynamicPowerNodeTag></div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> {};</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> </div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> <span class=\"comment\">// non-recursive version of the PowerNode transformation.</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"> 380</span> <span class=\"keyword\">struct </span>TransformTree<S,T,PowerNodeTag,false></div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> {};</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> </div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> <span class=\"comment\">// non-recursive version of the DynamicPowerNodeTag transformation.</span></div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> <span class=\"keyword\">struct </span>TransformTree<S,T,DynamicPowerNodeTag,false></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> {};</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> </div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> <span class=\"comment\">// helper struct that does the actual transformation for a composite node. We need this additional struct</span></div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"comment\">// to extract the template argument list with the types of all children from the node, which we cannot do</span></div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> <span class=\"comment\">// directly in the transformation<> template, as the type passed to transformation<> will usually be a</span></div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> <span class=\"comment\">// derived type and will normally have more template arguments than just the children. This declaration</span></div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> <span class=\"comment\">// just introduces the type of the helper struct, we always instantiate the specialization defined below;</span></div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> Children, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> <span class=\"keyword\">struct </span>transform_composite_node;</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"> 398</span> <span class=\"comment\">// specialized version of the helper struct which extracts the template argument list with the children from</span></div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> <span class=\"comment\">// its second template parameter, which has to be CompositeNode::ChildTypes. Apart from that, the struct is</span></div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\"> 400</span> <span class=\"comment\">// similar to the one for a PowerNode, but it obviously delegates transformation of the children to the TMP.</span></div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span>... C></div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> <span class=\"keyword\">struct </span>transform_composite_node<S,std::tuple<C...>,T></div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"> 403</span> {</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"> 405</span> <span class=\"comment\">// transformed type, using the same nested struct trick as the PowerNode</span></div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> <span class=\"keyword\">typedef</span> ImplementationTag<S> Tag;</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,Tag>::type NodeTransformation;</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::template <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a><<span class=\"keyword\">typename</span> TransformTree<C,</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> T,</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\"> 410</span> NodeTag<C>,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"> 411</span> LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> >::transformed_type...</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\"> 413</span> >::type transformed_type;</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> </div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::template <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a><<span class=\"keyword\">typename</span> TransformTree<C,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> T,</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> NodeTag<C>,</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> >::transformed_type...</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> >::storage_type transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> </div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> <span class=\"comment\">// Retrieve the transformation descriptor for the child with index i.</span></div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"> 423</span> <span class=\"comment\">// This little helper improves really improves the readability of the</span></div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"> 424</span> <span class=\"comment\">// transformation functions.</span></div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"> 425</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> <span class=\"keyword\">struct </span>ChildTransformation</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"> 427</span> : <span class=\"keyword\">public</span> TransformTree<typename S::template Child<i>::Type,</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"> 428</span> T,</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> NodeTag<typename S::template Child<i>::Type>,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> LookupNodeTransformation<</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"> 431</span> typename S::template Child<i>::Type,</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"> 432</span> T,</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> ImplementationTag<typename S::template Child<i>::Type></div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> >::type::recursive</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> ></div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> {};</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"> 437</span> </div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i, <span class=\"keyword\">typename</span> Tuple, <span class=\"keyword\">typename</span> Value></div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> setElement(Tuple& tuple, Value&& value)</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> {</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> std::get<i>(tuple) = std::forward<Value>(value);</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> }</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> </div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Trafo, std::size_t... i></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, Trafo&& t, std::index_sequence<i...> indices)</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> {</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> std::tuple<typename ChildTransformation<i>::transformed_storage_type...> storage;</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage, ChildTransformation<i>::transform_storage(s.template childStorage<i>(), std::forward<Trafo>(t))),0)...});</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s, std::forward<Trafo>(t), std::get<i>(storage)...);</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> }</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> </div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Trafo, std::size_t... i></div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, Trafo&& t, std::index_sequence<i...> indices)</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"> 454</span> {</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\"> 455</span> std::tuple<typename ChildTransformation<i>::transformed_storage_type...> storage;</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\"> 456</span> Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage, ChildTransformation<i>::transform_storage(sp->template childStorage<i>(), std::forward<Trafo>(t))),0)...});</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"> 457</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp, std::forward<Trafo>(t), std::get<i>(storage)...);</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"> 458</span> }</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\"> 459</span> };</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\"> 460</span> </div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> </div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"comment\">// the specialization of transformation<> for the CompositeNode. This just extracts the</span></div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> <span class=\"comment\">// CompositeNode::ChildTypes member and forwards to the helper struct</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keyword\">struct </span>TransformTree<S,T,CompositeNodeTag,true></div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> {</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> </div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> </div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> S::ChildTypes ChildTypes;</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> </div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> child_indices()</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\"> 473</span> {</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> <span class=\"keywordflow\">return</span> std::make_index_sequence<S::degree()>();</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\"> 475</span> }</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"> 476</span> </div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\"> 477</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"> 478</span> </div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"> 479</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> transform_composite_node<S,ChildTypes,T>::transformed_type transformed_type;</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\"> 480</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> transform_composite_node<S,ChildTypes,T>::transformed_storage_type transformed_storage_type;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\"> 481</span> </div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"> 482</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, T& t)</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\"> 483</span> {</div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"> 484</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform(s,t,child_indices());</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> }</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"> 486</span> </div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> {</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform(s,t,child_indices());</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> }</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"> 491</span> </div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\"> 492</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, T& t)</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> {</div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"> 494</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform_storage(sp,t,child_indices());</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"> 495</span> }</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\"> 496</span> </div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\"> 497</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"> 498</span> {</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform_storage(sp,t,child_indices());</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"> 500</span> }</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"> 501</span> </div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> };</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\"> 503</span> </div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> <span class=\"comment\">// non-recursive version of the CompositeNode transformation.</span></div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"> 505</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> <span class=\"keyword\">struct </span>TransformTree<S,T,CompositeNodeTag,false></div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"> 508</span> {};</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> </div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"> 510</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> </div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\"> 513</span> </div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> </div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00032_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa00044_html\"><div class=\"ttname\"><a href=\"a00044.html\">typetraits.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00094_html_ga48cffe31075a96776d284a184097a2aa\"><div class=\"ttname\"><a href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">Dune::TypeTree::registerNodeTransformation</a></div><div class=\"ttdeci\">void registerNodeTransformation(SourceNode *, Transformation *, Tag *)</div><div class=\"ttdoc\">Register transformation descriptor to transform SourceNode with Transformation.</div></div>\n-<div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01364_html\"><div class=\"ttname\"><a href=\"a01364.html\">Dune::TypeTree::TransformTree</a></div><div class=\"ttdoc\">Transform a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_a0fa8df89b999152babfee3749e5e03fd\"><div class=\"ttname\"><a href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\">Dune::TypeTree::TransformTree::Type</a></div><div class=\"ttdeci\">type Type</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_a1b704cd756aae56438079f11a0f43fd0\"><div class=\"ttname\"><a href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceTree > sp, Transformation &t)</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:134</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_a6ed10e27fd50de59bc28ea23a06f9925\"><div class=\"ttname\"><a href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceTree > sp, const Transformation &t=Transformation())</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_a84a5e3bb26d3f9f922603acbce5ab1a4\"><div class=\"ttname\"><a href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceTree &s, Transformation &t)</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:122</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_aa01b86c1992348c37a370a6eb7e9cd65\"><div class=\"ttname\"><a href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">Dune::TypeTree::TransformTree::type</a></div><div class=\"ttdeci\">transformed_type type</div><div class=\"ttdoc\">The type of the transformed tree.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:111</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_aba5dbf5fc7965852ecfcf89ff52284da\"><div class=\"ttname\"><a href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceTree &s, const Transformation &t=Transformation())</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:116</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_aca577396e60081dd3c87e64f0d932cc9\"><div class=\"ttname\"><a href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">Dune::TypeTree::TransformTree::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceTree > sp, const Transformation &t=Transformation())</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:141</div></div>\n-<div class=\"ttc\" id=\"aa01364_html_aef1bafb2982714bcf0639d6857b42030\"><div class=\"ttname\"><a href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\">Dune::TypeTree::TransformTree::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceTree > sp, Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:148</div></div>\n-<div class=\"ttc\" id=\"aa01548_html\"><div class=\"ttname\"><a href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function</a></div><div class=\"ttdoc\">Meta function that evaluates its argument iff it inherits from meta_function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:142</div></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00065.html\">dune/typetree/simpletransformationdescriptors.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00068.html\">dune/typetree/generictransformationdescriptors.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n+<div class=\"ttc\" id=\"aa00065_html\"><div class=\"ttname\"><a href=\"a00065.html\">simpletransformationdescriptors.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00068_html\"><div class=\"ttname\"><a href=\"a00068.html\">generictransformationdescriptors.hh</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,634 +1,26 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-transformation.hh\n+transformationutilities.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TRANSFORMATION_HH\n-7#define DUNE_TYPETREE_TRANSFORMATION_HH\n+6#ifndef DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n+7#define DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n 8\n-9#include <array>\n-10#include <tuple>\n-11#include <memory>\n-12#include <utility>\n-13\n-14#include <dune/common/hybridutilities.hh>\n-15#include <dune/common/exceptions.hh>\n-16#include <dune/common/typetraits.hh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-21\n-22\n-23namespace _\bD_\bu_\bn_\be {\n-24 namespace TypeTree {\n-25\n-31#ifdef DOXYGEN\n-32\n-34\n-53 template<typename SourceNode, typename Transformation, typename Tag>\n-_\b5_\b4 void _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn(SourceNode*, Transformation*, Tag*);\n-55\n-56#else // DOXYGEN\n-57\n-68 template<typename S, typename T, typename Tag>\n-69 struct LookupNodeTransformation\n-70 {\n-71\n-72 typedef decltype(_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn(declptr<S>(),declptr<T>\n-(),declptr<Tag>())) lookup_type;\n-73\n-74 typedef typename _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn<\n-75 lookup_type\n-76 >::type type;\n-77\n-78 static_assert((!std::is_same<type,void>::value), \"Unable to find valid\n-transformation descriptor\");\n-79 };\n-80\n-81#endif // DOXYGEN\n-82\n-83\n-85\n-94 template<typename SourceTree, typename Transformation, typename Tag =\n-StartTag, bool recursive = true>\n-_\b9_\b5 struct _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be\n-96 {\n-97\n-98#ifndef DOXYGEN\n-99\n-100 typedef typename\n-LookupNodeTransformation<SourceTree,Transformation,typename SourceTree::\n-ImplementationTag>::type NodeTransformation;\n-101\n-102 // the type of the new tree that will result from this transformation\n-103 typedef typename\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>::transformed_type transformed_type;\n-104\n-105 // the storage type of the new tree that will result from this\n-transformation\n-106 typedef typename\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>::transformed_storage_type transformed_storage_type;\n-107\n-108#endif // DOXYGEN\n-109\n-_\b1_\b1_\b1 typedef transformed_type _\bt_\by_\bp_\be;\n-112\n-_\b1_\b1_\b3 typedef _\bt_\by_\bp_\be _\bT_\by_\bp_\be;\n-114\n-_\b1_\b1_\b6 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceTree& s, const\n-Transformation& t = Transformation())\n-117 {\n-118 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(s,t);\n-119 }\n-120\n-_\b1_\b2_\b2 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceTree& s, Transformation& t)\n-123 {\n-124 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(s,t);\n-125 }\n-126\n-_\b1_\b2_\b8 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceTree> sp,\n-const Transformation& t = Transformation())\n-129 {\n-130 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(sp,t);\n-131 }\n-132\n-_\b1_\b3_\b4 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceTree> sp,\n-Transformation& t)\n-135 {\n-136 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(sp,t);\n-137 }\n-138\n-_\b1_\b4_\b1 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n-SourceTree> sp, const Transformation& t = Transformation())\n-142 {\n-143 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(sp,t);\n-144 }\n-145\n-_\b1_\b4_\b8 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n-SourceTree> sp, Transformation& t)\n-149 {\n-150 return\n-_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n-recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(sp,t);\n-151 }\n-152\n-153\n-154 };\n-155\n-156#ifndef DOXYGEN // internal per-node implementations of the transformation\n-algorithm\n-157\n-158 // handle a leaf node - this is easy\n-159 template<typename S, typename T, bool recursive>\n-160 struct TransformTree<S,T,LeafNodeTag,recursive>\n-161 {\n-162 // get transformed type from specification\n-163 typedef typename LookupNodeTransformation<S,T,ImplementationTag<S>>_\b:_\b:_\bt_\by_\bp_\be\n-NodeTransformation;\n-164\n-165 typedef typename NodeTransformation::transformed_type transformed_type;\n-166 typedef typename NodeTransformation::transformed_storage_type\n-transformed_storage_type;\n-167\n-168 // delegate instance transformation to per-node specification\n-169 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, T& t)\n-170 {\n-171 return NodeTransformation::transform(s,t);\n-172 }\n-173\n-174 // delegate instance transformation to per-node specification\n-175 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, const T& t)\n-176 {\n-177 return NodeTransformation::transform(s,t);\n-178 }\n-179\n-180 // delegate instance transformation to per-node specification\n-181 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const S> sp, T& t)\n-182 {\n-183 return NodeTransformation::transform(sp,t);\n-184 }\n-185\n-186 // delegate instance transformation to per-node specification\n-187 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const S> sp, const T& t)\n-188 {\n-189 return NodeTransformation::transform(sp,t);\n-190 }\n-191\n-192 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n-sp, T& t)\n-193 {\n-194 return NodeTransformation::transform_storage(sp,t);\n-195 }\n-196\n-197 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n-sp, const T& t)\n-198 {\n-199 return NodeTransformation::transform_storage(sp,t);\n-200 }\n-201\n-202 };\n-203\n-204\n-205 // common implementation for non-recursive transformation of non-leaf nodes\n-206 template<typename S, typename T>\n-207 struct TransformTreeNonRecursive\n-208 {\n-209 // get transformed type from specification\n-210 typedef typename LookupNodeTransformation<S,T,ImplementationTag<S>>::type\n-NodeTransformation;\n-211\n-212 typedef typename NodeTransformation::transformed_type transformed_type;\n-213 typedef typename NodeTransformation::transformed_storage_type\n-transformed_storage_type;\n-214\n-215 // delegate instance transformation to per-node specification\n-216 static transformed_type transform(const S& s, T& t)\n-217 {\n-218 return NodeTransformation::transform(s,t);\n-219 }\n-220\n-221 // delegate instance transformation to per-node specification\n-222 static transformed_type transform(const S& s, const T& t)\n-223 {\n-224 return NodeTransformation::transform(s,t);\n-225 }\n-226\n-227 // delegate instance transformation to per-node specification\n-228 static transformed_type transform(std::shared_ptr<const S> sp, T& t)\n-229 {\n-230 return NodeTransformation::transform(sp,t);\n-231 }\n-232\n-233 // delegate instance transformation to per-node specification\n-234 static transformed_type transform(std::shared_ptr<const S> sp, const T& t)\n-235 {\n-236 return NodeTransformation::transform(sp,t);\n-237 }\n-238\n-239 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n-sp, T& t)\n-240 {\n-241 return NodeTransformation::transform_storage(sp,t);\n-242 }\n-243\n-244 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n-sp, const T& t)\n-245 {\n-246 return NodeTransformation::transform_storage(sp,t);\n-247 }\n-248\n-249 };\n-250\n-251\n-252 namespace Impl {\n-253\n-254 // Helper class to handle recursive power nodes\n-255 template<class Source, class Transformation, class Tag>\n-256 class RecursivePowerTransformTree\n-257 {\n-258 // We only know two types of tags!\n-259 static_assert(std::is_same_v<Tag,PowerNodeTag> or std::\n-is_same_v<Tag,DynamicPowerNodeTag>);\n-260\n-261 using ChildType = typename Source::ChildType;\n-262\n-263 // in case degree is dynamic, provid a vector correctly initialized\n-264 template<class NodeStorage>\n-265 static auto node_storage_provider(const std::size_t& degree)\n-266 {\n-267 return std::vector<NodeStorage>(degree);\n-268 }\n-269\n-270 // in case degree is static, provid an array\n-271 template<class NodeStorage, class StaticIndex>\n-272 static auto node_storage_provider(StaticIndex)\n-273 {\n-274 return std::array<NodeStorage,std::size_t(StaticIndex{})>();\n-275 }\n-276\n-277 public:\n-278 // get transformed type from specification\n-279 // Handling this transformation in a way that makes the per-node\n-specification easy to write\n-280 // is a little involved:\n-281 // The problem is that the transformed power node must be parameterized on\n-the transformed child\n-282 // type. So we need to transform the child type and pass the transformed\n-child type to an inner\n-283 // template of the node transformation struct called result (see example of\n-such a specification\n-284 // further down).\n-285 using NodeTransformation = typename\n-LookupNodeTransformation<Source,Transformation,ImplementationTag<Source>>::\n-type;\n-286 using ChildNodeTransformation = typename\n-LookupNodeTransformation<ChildType,Transformation,ImplementationTag<ChildType>>::\n-type;\n-287\n-288 private:\n-289 // Since every child is same type, is enough to get transformation once\n-290 using ChildTreeTransformation = TransformTree<ChildType,\n-291 Transformation,\n-292 NodeTag<ChildType>,\n-293 ChildNodeTransformation::recursive>;\n-294\n-295 // Get transformed type of children\n-296 using transformed_child_type = typename ChildTreeTransformation::\n-transformed_type;\n-297 using transformed_child_storage_type = typename ChildTreeTransformation::\n-transformed_storage_type;\n-298 public:\n-299 // Apply transformation from children to current node\n-300 using transformed_type = typename NodeTransformation::template\n-result<transformed_child_type>::type;\n-301 using transformed_storage_type = typename NodeTransformation::template\n-result<transformed_child_type>::storage_type;\n-302\n-303 // Transform an instance of source tree.\n-304 static transformed_type transform(const Source& source, Transformation&\n-transformation)\n-305 {\n-306 auto children_storage = node_storage_provider<std::\n-shared_ptr<transformed_child_type>>(source.degree());\n-307 for (std::size_t k = 0; k < source.degree(); ++k) {\n-308 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source.childStorage(k),transformation);\n-309 }\n-310 return NodeTransformation::transform\n-(source,transformation,children_storage);\n-311 }\n-312\n-313 // Transform an instance of source tree.\n-314 static transformed_type transform(const Source& source, const\n-Transformation& transformation)\n-315 {\n-316 auto children_storage = node_storage_provider<std::\n-shared_ptr<transformed_child_type>>(source.degree());\n-317 for (std::size_t k = 0; k < source.degree(); ++k) {\n-318 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source.childStorage(k),transformation);\n-319 }\n-320 return NodeTransformation::transform\n-(source,transformation,children_storage);\n-321 }\n-322\n-323 // Transform an instance of source tree.\n-324 static transformed_type transform(std::shared_ptr<const Source> source_ptr,\n-Transformation& transformation)\n-325 {\n-326 auto children_storage = node_storage_provider<std::\n-shared_ptr<transformed_child_type>>(source_ptr->degree());\n-327 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n-328 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source_ptr->childStorage(k),transformation);\n-329 }\n-330 return NodeTransformation::transform\n-(source_ptr,transformation,children_storage);\n-331 }\n-332\n-333 // Transform an instance of source tree.\n-334 static transformed_type transform(std::shared_ptr<const Source> source_ptr,\n-const Transformation& transformation)\n-335 {\n-336 auto children_storage = node_storage_provider<std::\n-shared_ptr<transformed_child_type>>(source_ptr->degree());\n-337 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n-338 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source_ptr->childStorage(k),transformation);\n-339 }\n-340 return NodeTransformation::transform\n-(source_ptr,transformation,children_storage);\n-341 }\n-342\n-343 // Transform an instance of source tree ptr.\n-344 static transformed_storage_type transform_storage(std::shared_ptr<const\n-Source> source_ptr, Transformation& transformation)\n-345 {\n-346 auto children_storage =\n-node_storage_provider<transformed_child_storage_type>(source_ptr->degree());\n-347 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n-348 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source_ptr->childStorage(k),transformation);\n-349 }\n-350 return NodeTransformation::transform_storage\n-(source_ptr,transformation,children_storage);\n-351 }\n-352\n-353 // Transform an instance of source tree ptr.\n-354 static transformed_storage_type transform_storage(std::shared_ptr<const\n-Source> source_ptr, const Transformation& transformation)\n-355 {\n-356 auto children_storage =\n-node_storage_provider<transformed_child_storage_type>(source_ptr->degree());\n-357 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n-358 children_storage[k] = ChildTreeTransformation::transform_storage\n-(source_ptr->childStorage(k),transformation);\n-359 }\n-360 return NodeTransformation::transform_storage\n-(source_ptr,transformation,children_storage);\n-361 }\n-362\n-363 };\n-364 } // namespace Impl\n-365\n-366 // Recursive version of the PowerNode transformation for static nodes.\n-367 template<typename Source, typename Transformation>\n-368 struct TransformTree<Source,Transformation,PowerNodeTag,true>\n-369 : public Impl::\n-RecursivePowerTransformTree<Source,Transformation,PowerNodeTag>\n-370 {};\n-371\n-372 // Recursive version of the DynamicPowerNode transformation for static\n-nodes.\n-373 template<typename Source, typename Transformation>\n-374 struct TransformTree<Source,Transformation,DynamicPowerNodeTag,true>\n-375 : public Impl::\n-RecursivePowerTransformTree<Source,Transformation,DynamicPowerNodeTag>\n-376 {};\n-377\n-378 // non-recursive version of the PowerNode transformation.\n-379 template<typename S, typename T>\n-380 struct TransformTree<S,T,PowerNodeTag,false>\n-381 : public TransformTreeNonRecursive<S,T>\n-382 {};\n-383\n-384 // non-recursive version of the DynamicPowerNodeTag transformation.\n-385 template<typename S, typename T>\n-386 struct TransformTree<S,T,DynamicPowerNodeTag,false>\n-387 : public TransformTreeNonRecursive<S,T>\n-388 {};\n-389\n-390 // helper struct that does the actual transformation for a composite node.\n-We need this additional struct\n-391 // to extract the template argument list with the types of all children\n-from the node, which we cannot do\n-392 // directly in the transformation<> template, as the type passed to\n-transformation<> will usually be a\n-393 // derived type and will normally have more template arguments than just\n-the children. This declaration\n-394 // just introduces the type of the helper struct, we always instantiate the\n-specialization defined below;\n-395 template<typename S, typename Children, typename T>\n-396 struct transform_composite_node;\n-397\n-398 // specialized version of the helper struct which extracts the template\n-argument list with the children from\n-399 // its second template parameter, which has to be CompositeNode::\n-ChildTypes. Apart from that, the struct is\n-400 // similar to the one for a PowerNode, but it obviously delegates\n-transformation of the children to the TMP.\n-401 template<typename S, typename T, typename... C>\n-402 struct transform_composite_node<S,std::tuple<C...>,T>\n-403 {\n-404\n-405 // transformed type, using the same nested struct trick as the PowerNode\n-406 typedef ImplementationTag<S> Tag;\n-407 typedef typename LookupNodeTransformation<S,T,Tag>::type\n-NodeTransformation;\n-408 typedef typename NodeTransformation::template _\br_\be_\bs_\bu_\bl_\bt<typename\n-TransformTree<C,\n-409 T,\n-410 NodeTag<C>,\n-411 LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive\n-412 >::transformed_type...\n-413 >::type transformed_type;\n-414\n-415 typedef typename NodeTransformation::template _\br_\be_\bs_\bu_\bl_\bt<typename\n-TransformTree<C,\n-416 T,\n-417 NodeTag<C>,\n-418 LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive\n-419 >::transformed_type...\n-420 >::storage_type transformed_storage_type;\n-421\n-422 // Retrieve the transformation descriptor for the child with index i.\n-423 // This little helper improves really improves the readability of the\n-424 // transformation functions.\n-425 template<std::size_t i>\n-426 struct ChildTransformation\n-427 : public TransformTree<typename S::template Child<i>::Type,\n-428 T,\n-429 NodeTag<typename S::template Child<i>::Type>,\n-430 LookupNodeTransformation<\n-431 typename S::template Child<i>::Type,\n-432 T,\n-433 ImplementationTag<typename S::template Child<i>::Type>\n-434 >::type::recursive\n-435 >\n-436 {};\n-437\n-438 template<std::size_t i, typename Tuple, typename Value>\n-439 static void setElement(Tuple& tuple, Value&& value)\n-440 {\n-441 std::get<i>(tuple) = std::forward<Value>(value);\n-442 }\n-443\n-444 template<typename Trafo, std::size_t... i>\n-445 static transformed_type transform(const S& s, Trafo&& t, std::\n-index_sequence<i...> indices)\n-446 {\n-447 std::tuple<typename ChildTransformation<i>::transformed_storage_type...>\n-storage;\n-448 Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage,\n-ChildTransformation<i>::transform_storage(s.template childStorage<i>(), std::\n-forward<Trafo>(t))),0)...});\n-449 return NodeTransformation::transform(s, std::forward<Trafo>(t), std::get<i>\n-(storage)...);\n-450 }\n-451\n-452 template<typename Trafo, std::size_t... i>\n-453 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n-sp, Trafo&& t, std::index_sequence<i...> indices)\n-454 {\n-455 std::tuple<typename ChildTransformation<i>::transformed_storage_type...>\n-storage;\n-456 Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage,\n-ChildTransformation<i>::transform_storage(sp->template childStorage<i>(), std::\n-forward<Trafo>(t))),0)...});\n-457 return NodeTransformation::transform_storage(sp, std::forward<Trafo>(t),\n-std::get<i>(storage)...);\n-458 }\n-459 };\n-460\n-461\n-462 // the specialization of transformation<> for the CompositeNode. This just\n-extracts the\n-463 // CompositeNode::ChildTypes member and forwards to the helper struct\n-464 template<typename S, typename T>\n-465 struct TransformTree<S,T,CompositeNodeTag,true>\n-466 {\n-467\n-468 private:\n-469\n-470 typedef typename S::ChildTypes ChildTypes;\n-471\n-472 static auto child_indices()\n-473 {\n-474 return std::make_index_sequence<S::degree()>();\n-475 }\n-476\n-477 public:\n-478\n-479 typedef typename transform_composite_node<S,ChildTypes,T>::transformed_type\n-transformed_type;\n-480 typedef typename transform_composite_node<S,ChildTypes,T>::\n-transformed_storage_type transformed_storage_type;\n-481\n-482 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, T& t)\n-483 {\n-484 return transform_composite_node<S,ChildTypes,T>::transform\n-(s,t,child_indices());\n-485 }\n-486\n-487 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, const T& t)\n-488 {\n-489 return transform_composite_node<S,ChildTypes,T>::transform\n-(s,t,child_indices());\n-490 }\n-491\n-492 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n-sp, T& t)\n-493 {\n-494 return transform_composite_node<S,ChildTypes,T>::transform_storage\n-(sp,t,child_indices());\n-495 }\n-496\n-497 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n-sp, const T& t)\n-498 {\n-499 return transform_composite_node<S,ChildTypes,T>::transform_storage\n-(sp,t,child_indices());\n-500 }\n-501\n-502 };\n-503\n-504 // non-recursive version of the CompositeNode transformation.\n-505 template<typename S, typename T>\n-506 struct TransformTree<S,T,CompositeNodeTag,false>\n-507 : public TransformTreeNonRecursive<S,T>\n-508 {};\n-509\n-510#endif // DOXYGEN\n-511\n-513\n-514 } // namespace TypeTree\n-515} //namespace Dune\n-516\n-517#endif // DUNE_TYPETREE_TRANSFORMATION_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n-_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-void registerNodeTransformation(SourceNode *, Transformation *, Tag *)\n-Register transformation descriptor to transform SourceNode with Transformation.\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be\n-Transform a TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be\n-type Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(std::shared_ptr< const SourceTree > sp,\n-Transformation &t)\n-Apply transformation to an existing tree s.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(std::shared_ptr< const SourceTree > sp, const\n-Transformation &t=Transformation())\n-Apply transformation to an existing tree s.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(const SourceTree &s, Transformation &t)\n-Apply transformation to an existing tree s.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\by_\bp_\be\n-transformed_type type\n-The type of the transformed tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(const SourceTree &s, const Transformation\n-&t=Transformation())\n-Apply transformation to an existing tree s.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static transformed_storage_type transform_storage(std::shared_ptr< const\n-SourceTree > sp, const Transformation &t=Transformation())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static transformed_storage_type transform_storage(std::shared_ptr< const\n-SourceTree > sp, Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Meta function that evaluates its argument iff it inherits from meta_function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:142\n+9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+11\n+12#endif // DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n+_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00023.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00023.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: fixedcapacitystack.hh File Reference</title>\n+<title>dune-typetree: accumulate_static.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,37 +71,134 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">fixedcapacitystack.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">accumulate_static.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <array></code><br />\n-<code>#include <cassert></code><br />\n+<div class=\"textblock\"><code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n </div>\n <p><a href=\"a00023_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01188.html\">Dune::TypeTree::FixedCapacityStackView< T ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00924.html\">Dune::TypeTree::or_< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using ||. <a href=\"a00924.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01196.html\">Dune::TypeTree::FixedCapacityStack< T, capacity ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00928.html\">Dune::TypeTree::or_< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00932.html\">Dune::TypeTree::and_< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using &&. <a href=\"a00932.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00936.html\">Dune::TypeTree::and_< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00940.html\">Dune::TypeTree::plus< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using +. <a href=\"a00940.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00944.html\">Dune::TypeTree::plus< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00948.html\">Dune::TypeTree::minus< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using -. <a href=\"a00948.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00952.html\">Dune::TypeTree::minus< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00956.html\">Dune::TypeTree::multiply< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using *. <a href=\"a00956.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00960.html\">Dune::TypeTree::multiply< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00964.html\">Dune::TypeTree::min< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type by returning their minimum. <a href=\"a00964.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00968.html\">Dune::TypeTree::min< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00972.html\">Dune::TypeTree::max< result_type ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type by returning their maximum. <a href=\"a00972.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00976.html\">Dune::TypeTree::max< result_type >::reduce< r1, r2 ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01016.html\">Dune::TypeTree::AccumulateValue< Tree, Functor, Reduction, startValue, ParentChildReduction ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically accumulate a value over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01016.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01068.html\">Dune::TypeTree::TypeAccumulationPolicy< Functor, Reduction, StartType, ParentChildReduction, ReductionAlgorithm ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01072.html\">Dune::TypeTree::AccumulateType< Tree, Policy ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically accumulate a type over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01072.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00099\" id=\"r_a00099\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html\">Dune::TypeTree::Experimental</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a470e7e00fc4aa26e0bf46ea22a8cf2e2\" id=\"r_a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree , typename Visitor , typename Init > </td></tr>\n+<tr class=\"memitem:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">Dune::TypeTree::Experimental::hybridApplyToTree</a> (Tree &&tree, Visitor &&visitor, Init &&init)</td></tr>\n+<tr class=\"memdesc:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply hybrid visitor to <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n+<tr class=\"separator:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table>\n+<h2 class=\"groupheader\">Variable Documentation</h2>\n+<a id=\"a5c902ae13e1b03f88e252f9fd9f85952\" name=\"a5c902ae13e1b03f88e252f9fd9f85952\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c902ae13e1b03f88e252f9fd9f85952\">◆ </a></span>child_result</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+<table class=\"mlabels\">\n+ <tr>\n+ <td class=\"mlabels-left\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">const result_type child_result = accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,NodeTag<child>><a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a></td>\n+ </tr>\n+ </table>\n+ </td>\n+ <td class=\"mlabels-right\">\n+<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n+ </tr>\n+</table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n+<a id=\"acd23380b12c1509b3b3f31b893af75c8\" name=\"acd23380b12c1509b3b3f31b893af75c8\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd23380b12c1509b3b3f31b893af75c8\">◆ </a></span>result</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+<table class=\"mlabels\">\n+ <tr>\n+ <td class=\"mlabels-left\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">const result_type result = current_value</td>\n+ </tr>\n+ </table>\n+ </td>\n+ <td class=\"mlabels-right\">\n+<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n+ </tr>\n </table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,84 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-fixedcapacitystack.hh File Reference\n-#include <array>\n-#include <cassert>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+accumulate_static.hh File Reference\n+#include <dune/common/typetraits.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b<_\b _\bT_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type using ||. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\b<_\b _\bT_\b,_\b _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type using &&. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type using +. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type using -. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type using *. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type by returning their\n+ minimum. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Statically combine two values of type result_type by returning their\n+ maximum. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bF_\bu_\bn_\bc_\bt_\bo_\br_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bs_\bt_\ba_\br_\bt_\bV_\ba_\bl_\bu_\be_\b,\n+ _\bP_\ba_\br_\be_\bn_\bt_\bC_\bh_\bi_\bl_\bd_\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b _\b>\n+\u00a0 Statically accumulate a value over the nodes of a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b<_\b _\bF_\bu_\bn_\bc_\bt_\bo_\br_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bS_\bt_\ba_\br_\bt_\bT_\by_\bp_\be_\b,\n+ _\bP_\ba_\br_\be_\bn_\bt_\bC_\bh_\bi_\bl_\bd_\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\bA_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bP_\bo_\bl_\bi_\bc_\by_\b _\b>\n+\u00a0 Statically accumulate a type over the nodes of a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename Tree , typename Visitor , typename Init >\n+auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (Tree &&tree, Visitor\n+ &&visitor, Init &&init)\n+\u00a0 Apply hybrid visitor to _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n+\u00a0\n+*\b**\b**\b**\b**\b* V\bVa\bar\bri\bia\bab\bbl\ble\be D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bhi\bil\bld\bd_\b_r\bre\bes\bsu\bul\blt\bt *\b**\b**\b**\b**\b*\n+const result_type child_result =\n+accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,NodeTag<child>>_\b:_\b: static\n+_\br_\be_\bs_\bu_\bl_\bt\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0r\bre\bes\bsu\bul\blt\bt *\b**\b**\b**\b**\b*\n+const result_type result = current_value static\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00023_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00023_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: fixedcapacitystack.hh Source File</title>\n+<title>dune-typetree: accumulate_static.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,215 +74,595 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">fixedcapacitystack.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">accumulate_static.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<a href=\"a00023.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n+<a href=\"a00023.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n <div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n <div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00021\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html\"> 21</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a></div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">struct </span>Impl</div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> Impl(T* data, std::size_t <a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> : _data(data)</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> , _size(0)</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> , _capacity(<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> {}</div>\n+<div class=\"foldopen\" id=\"foldopen00016\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00096.html\"> 16</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"foldopen\" id=\"foldopen00017\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html\"> 17</a></span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00026\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00924.html\"> 26</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00924.html\">or_</a></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00029\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00928.html\"> 29</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00928.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\"> 31</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\">result</a> = r1 || r2;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> };</div>\n+</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> T * <span class=\"keyword\">const</span> _data;</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> std::size_t _size;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">const</span> std::size_t _capacity;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> };</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\"> 40</a></span> <a class=\"code hl_function\" href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\">FixedCapacityStackView</a>(Impl& impl)</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> : _impl(impl)</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> {}</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00037\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00932.html\"> 37</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00932.html\">and_</a></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00936.html\"> 40</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00936.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\">result</a> = r1 && r2;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">public</span>:</div>\n <div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\"> 46</a></span> std::size_t <a class=\"code hl_function\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">size</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> <span class=\"keywordflow\">return</span> _impl._size;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\"> 51</a></span> std::size_t <a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keywordflow\">return</span> _impl._capacity;</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\"> 56</a></span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keywordflow\">return</span> _impl._size == 0;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\"> 61</a></span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">full</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keywordflow\">return</span> _impl._size == _impl._capacity;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00066\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\"> 66</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\">push_back</a>(<span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> {</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">full</a>());</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> _impl._data[_impl._size++] = t;</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\"> 72</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\">pop_back</a>()</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> --_impl._size;</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\"> 78</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">back</a>()</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> {</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> _impl._data[_impl._size-1];</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\"> 84</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\">back</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keywordflow\">return</span> _impl._data[_impl._size-1];</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> }</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00940.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00940.html\">plus</a></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00944.html\"> 51</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00944.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\"> 53</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\">result</a> = r1 + r2;</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00948.html\"> 59</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00948.html\">minus</a></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00952.html\"> 62</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00952.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> {</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\"> 64</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\">result</a> = r1 - r2;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00956.html\"> 70</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00956.html\">multiply</a></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> {</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00960.html\"> 73</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00960.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> {</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\"> 75</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\">result</a> = r1 * r2;</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00964.html\"> 81</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00964.html\">min</a></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00968.html\"> 84</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00968.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> {</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\"> 86</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\">result</a> = r1 < r2 ? r1 : r2;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> };</div>\n </div>\n <div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\"> 90</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">front</a>()</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keywordflow\">return</span> _impl._data[0];</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\"> 96</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\">front</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keywordflow\">return</span> _impl._data[0];</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> }</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n+<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00972.html\"> 92</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00972.html\">max</a></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n+<div class=\"foldopen\" id=\"foldopen00095\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00976.html\"> 95</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00976.html\">reduce</a></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\"> 97</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\">result</a> = r1 > r2 ? r1 : r2;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> };</div>\n </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n <div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\"> 102</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\">operator[]</a>(std::size_t k)</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> assert(k < _impl._size);</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> _impl._data[k];</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00108\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\"> 108</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\">operator[]</a>(std::size_t k)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> assert(k < _impl._size);</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keywordflow\">return</span> _impl._data[k];</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> Impl& _impl;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"comment\">// implementation of the traversal algorithm</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, <span class=\"keywordtype\">bool</span> doVisit></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> <span class=\"keyword\">struct </span>accumulate_node_helper</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> {</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\"> 113</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = current_value;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> };</div>\n <div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> capacity></div>\n-<div class=\"foldopen\" id=\"foldopen00121\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01196.html\"> 121</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> : <span class=\"keyword\">private</span> std::array<T,capacity></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> , <span class=\"keyword\">private</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> , <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView<T></a> <a class=\"code hl_class\" href=\"a01188.html\">view_base</a>;</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">view_base::back</a>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">view_base::front</a>;</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">view_base::size</a>;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">using </span>view_base::operator[];</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00136\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\"> 136</a></span> <a class=\"code hl_function\" href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\">FixedCapacityStack</a>()</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> : <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl(&(static_cast<std::array<T,<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>>&>(*this)[0]),<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> , <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>(static_cast<typename <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl&>(*this))</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {}</div>\n-</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">struct </span>accumulate_node_helper<Node,Functor,Reduction,current_value,TreePath,true></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> {</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = Reduction::template reduce<current_value,Functor::template visit<Node,TreePath>::result>::result;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> };</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> Tag></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">struct </span>accumulate_value;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> LeafNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">struct </span>accumulate_value<LeafNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,LeafNodeTag></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> =</div>\n <div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> accumulate_node_helper<LeafNode,Functor,Reduction,current_value,TreePath,Functor::template doVisit<LeafNode,TreePath>::value><a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n <div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">//FixedCapacityStack(const FixedCapacityStack&);</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a>& operator=(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a>&);</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> };</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, std::<span class=\"keywordtype\">size_t</span> i, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"keyword\">struct </span>accumulate_over_children</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> {</div>\n <div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(TreePath{},index_constant<i>{})) child_tree_path;</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> typedef typename Node::template <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a><i>::Type child;</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00023.html#a5c902ae13e1b03f88e252f9fd9f85952\"> 156</a></span> static const result_type child_result = accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a><child>>::result;</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> static const result_type result = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,child_result,TreePath,i+1,n>::result;</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> };</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> template<typename Node, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> struct accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,n,n></div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = current_value;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> };</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keyword\">struct </span>accumulate_value_generic_composite_node</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> {</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#a5c902ae13e1b03f88e252f9fd9f85952\">child_result</a> = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,0,StaticDegree<Node>::value><a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> =</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> accumulate_node_helper<Node,Functor,ParentChildReduction,child_result,TreePath,Functor::template doVisit<Node,TreePath>::value><a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> </div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> };</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> </div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> <span class=\"keyword\">struct </span>accumulate_value<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,PowerNodeTag></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> : <span class=\"keyword\">public</span> accumulate_value_generic_composite_node<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> {};</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> CompositeNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">struct </span>accumulate_value<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,CompositeNodeTag></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> : <span class=\"keyword\">public</span> accumulate_value_generic_composite_node<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath></div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> {};</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type startValue, <span class=\"keyword\">typename</span> ParentChildReduction = Reduction></div>\n+<div class=\"foldopen\" id=\"foldopen00261\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html\"> 261</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01016.html\">AccumulateValue</a></div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> {</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\"> 265</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a>;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\"> 268</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a> <a class=\"code hl_variable\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">result</a> = accumulate_value<Tree,Functor,Reduction,ParentChildReduction,startValue,HybridTreePath<>,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Tree></a>><a class=\"code hl_variable\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">::result</a>;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> </div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"keyword\">struct </span>flattened_reduction;</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> </div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"keyword\">struct </span>bottom_up_reduction;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> </div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> <span class=\"comment\">// implementation of the traversal algorithm</span></div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> </div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, <span class=\"keywordtype\">bool</span> doVisit></div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> <span class=\"keyword\">struct </span>accumulate_type_node_helper</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> {</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> };</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keyword\">struct </span>accumulate_type_node_helper<Node,Functor,Reduction,current_type,TreePath,true></div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> {</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Reduction::template reduce<</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> <span class=\"keyword\">typename</span> Functor::template visit<</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> Node,</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> TreePath</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> >::type</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> };</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> </div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> Tag></div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> <span class=\"keyword\">struct </span>accumulate_type;</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> LeafNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> <span class=\"keyword\">struct </span>accumulate_type<LeafNode,Policy,current_type,TreePath,LeafNodeTag></div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> {</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_node_helper<</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> LeafNode,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> <span class=\"keyword\">typename</span> Policy::functor,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> <span class=\"keyword\">typename</span> Policy::sibling_reduction,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> TreePath,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> Policy::functor::template doVisit<</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> LeafNode,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> TreePath>::value</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> </div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> };</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> </div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type, <span class=\"keyword\">typename</span> reduction_strategy></div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> <span class=\"keyword\">struct </span>propagate_type_down_tree;</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> </div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type></div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> <span class=\"keyword\">struct </span>propagate_type_down_tree<</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> tree_path,</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> start_type,</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> bottom_up_reduction</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> ></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> {</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> };</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> </div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type></div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> <span class=\"keyword\">struct </span>propagate_type_down_tree<</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> tree_path,</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> start_type,</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> flattened_reduction</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> ></div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> {</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::conditional<</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> TreePathBack<tree_path>::value == 0,</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> start_type,</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> current_type</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> };</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> </div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, std::<span class=\"keywordtype\">size_t</span> i, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">struct </span>accumulate_type_over_children</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> {</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> </div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(TreePath{},index_constant<i>{})) child_tree_path;</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> </div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> typedef typename Node::template Child<i>::Type child;</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> typedef typename accumulate_type<</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> child,</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> Policy,</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> <span class=\"comment\">// apply reduction choice (flat / hierarchic)</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> typename propagate_type_down_tree<</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"> 380</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> child_tree_path,</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> typename Policy::start_type,</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> typename Policy::reduction_strategy</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> >::type,</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> child_tree_path,</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> NodeTag<child></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> >::type child_result_type;</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> </div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> typedef typename accumulate_type_over_children<</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> Node,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> Policy,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> child_result_type,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> TreePath,</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> i+1,</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> n</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"> 398</span> };</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> template<typename Node, typename Policy, typename current_type, typename TreePath, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> struct accumulate_type_over_children<Node,Policy,current_type,TreePath,n,n></div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"> 403</span> {</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"> 405</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> </div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> };</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> </div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> </div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\"> 413</span> <span class=\"keyword\">struct </span>accumulate_type_generic_composite_node</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> {</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> </div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_over_children<</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> Node,</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> Policy,</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> current_type,</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> TreePath,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> 0,</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> StaticDegree<Node>::value</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"> 423</span> >::type children_result_type;</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"> 424</span> </div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"> 425</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_node_helper<</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> Node,</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"> 427</span> <span class=\"keyword\">typename</span> Policy::functor,</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"> 428</span> <span class=\"keyword\">typename</span> Policy::parent_child_reduction,</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> children_result_type,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> TreePath,</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"> 431</span> Policy::functor::template doVisit<</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"> 432</span> Node,</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> TreePath</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> >::value</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> </div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"> 437</span> };</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> </div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> <span class=\"keyword\">struct </span>accumulate_type<PowerNode,Policy,current_type,TreePath,PowerNodeTag></div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> : <span class=\"keyword\">public</span> accumulate_type_generic_composite_node<PowerNode,Policy,current_type,TreePath></div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> {};</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> </div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> CompositeNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> <span class=\"keyword\">struct </span>accumulate_type<CompositeNode,Policy,current_type,TreePath,CompositeNodeTag></div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> : <span class=\"keyword\">public</span> accumulate_type_generic_composite_node<CompositeNode,Policy,current_type,TreePath></div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> {};</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> </div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> </div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> </div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> <span class=\"keyword\">template</span><</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"keyword\">typename</span> Functor,</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> <span class=\"keyword\">typename</span> Reduction,</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"keyword\">typename</span> StartType,</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keyword\">typename</span> ParentChildReduction = Reduction,</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> <span class=\"keyword\">typename</span> ReductionAlgorithm = flattened_reduction</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> ></div>\n+<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html\"> 468</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01068.html\">TypeAccumulationPolicy</a></div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> {</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> </div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\"> 498</a></span> <span class=\"keyword\">typedef</span> Functor <a class=\"code hl_typedef\" href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\">functor</a>;</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> </div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\"> 519</a></span> <span class=\"keyword\">typedef</span> Reduction <a class=\"code hl_typedef\" href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\">sibling_reduction</a>;</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> </div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a267f825310089246c7f3cf82a464944a\"> 527</a></span> <span class=\"keyword\">typedef</span> ParentChildReduction <a class=\"code hl_typedef\" href=\"a01068.html#a267f825310089246c7f3cf82a464944a\">parent_child_reduction</a>;</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> </div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\"> 535</a></span> <span class=\"keyword\">typedef</span> StartType <a class=\"code hl_typedef\" href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\">start_type</a>;</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a7658a27585345f9fe379367fed06349c\"> 541</a></span> <span class=\"keyword\">typedef</span> ReductionAlgorithm <a class=\"code hl_typedef\" href=\"a01068.html#a7658a27585345f9fe379367fed06349c\">reduction_strategy</a>;</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> </div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> </div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span> </div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"> 554</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Policy></div>\n+<div class=\"foldopen\" id=\"foldopen00555\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01072.html\"> 555</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01072.html\">AccumulateType</a></div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\"> 556</span> {</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\"> 557</span> </div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\"> 559</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type<</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"> 560</span> Tree,</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"> 561</span> Policy,</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"> 562</span> <span class=\"keyword\">typename</span> Policy::start_type,</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\"> 563</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<></a>,</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\"> 564</span> <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Tree></a></div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\"> 565</a></span> >::type <a class=\"code hl_typedef\" href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"> 566</span> </div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\"> 567</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\"> 568</span> </div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\"> 569</span> </div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"> 570</span> </div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\"> 571</span> </div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\"> 572</span> </div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"> 573</span><span class=\"comment\"> /***************************************************/</span></div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"> 574</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00575\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00099.html\"> 575</a></span> <span class=\"keyword\">namespace </span>Experimental {</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\"> 576</span> <span class=\"keyword\">namespace </span>Impl {</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> </div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\"> 579</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V, <span class=\"keyword\">class </span>U,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"> 580</span> std::enable_if_t<std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span> <span class=\"keyword\">auto</span> hybridApplyToTree(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor, U&& current_val)</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> {</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"> 583</span> <span class=\"keywordflow\">return</span> visitor.leaf(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::forward<U>(current_val));</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\"> 584</span> }</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"> 585</span> </div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V, <span class=\"keyword\">class </span>U,</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> std::enable_if_t<not std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> <span class=\"keyword\">auto</span> hybridApplyToTree(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor, U&& current_val)</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> {</div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"> 591</span> <span class=\"keyword\">using </span>Tree = std::remove_reference_t<T>;</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"> 593</span> <span class=\"keyword\">auto</span> pre_val = visitor.pre(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::forward<U>(current_val));</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> </div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> <span class=\"comment\">// check which type of traversal is supported by the tree</span></div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<Detail::DynamicTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<Detail::StaticTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> </div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> </div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"> 602</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> </div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> <span class=\"comment\">// declare rule that applies visitor and current value to a child i. Returns next value</span></div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\"> 606</span> <span class=\"keyword\">auto</span> apply_i = [&](<span class=\"keyword\">auto</span>&& value, <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& i){</div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"> 607</span> <span class=\"keyword\">auto</span>&& <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> = tree.child(i);</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\"> 608</span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = std::decay_t<<span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>)>;</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\"> 609</span> </div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\"> 610</span> <span class=\"keyword\">auto</span> val_before = visitor.beforeChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i, std::move(value));</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\"> 611</span> </div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\"> 612</span> <span class=\"comment\">// visits between children</span></div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\"> 613</span> <span class=\"keyword\">auto</span> val_in = Hybrid::ifElse(</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\"> 614</span> Hybrid::equal_to(i,Indices::_0),</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\"> 615</span> [&](<span class=\"keyword\">auto</span> <span class=\"keywordtype\">id</span>){<span class=\"keywordflow\">return</span> std::move(val_before);},</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\"> 616</span> [&](<span class=\"keyword\">auto</span> id){<span class=\"keywordflow\">return</span> visitor.in(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::move(val_before));}</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span> );</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"> 618</span> </div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\"> 619</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree,Child,TreePath>::value;</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> <span class=\"keyword\">auto</span> val_visit = [&](){</div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"> 621</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (visitChild) {</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\"> 622</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\"> 623</span> <span class=\"keywordflow\">return</span> hybridApplyToTree(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, childTreePath, visitor, std::move(val_in));</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\"> 624</span> }</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\"> 625</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\"> 626</span> <span class=\"keywordflow\">return</span> std::move(val_in);</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> }();</div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\"> 628</span> </div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\"> 629</span> <span class=\"keywordflow\">return</span> visitor.afterChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i, std::move(val_visit));</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> };</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> </div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> <span class=\"comment\">// apply visitor to children</span></div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> <span class=\"keyword\">auto</span> in_val = [&](){</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (allowStaticTraversal::value && not preferDynamicTraversal::value) {</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> <span class=\"comment\">// get list of static indices</span></div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\"> 636</span> <span class=\"keyword\">auto</span> indices = std::make_index_sequence<Tree::degree()>{};</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\"> 637</span> </div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> <span class=\"comment\">// unfold apply_i left to right</span></div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i) {</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> <span class=\"keywordflow\">return</span> left_fold(std::move(apply_i),std::move(pre_val), i...);</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\"> 660</span> }, indices);</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\"> 661</span> </div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\"> 662</span> } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\"> 663</span> <span class=\"comment\">// unfold first child to get type</span></div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\"> 664</span> <span class=\"keyword\">auto</span> i_val = apply_i(std::move(pre_val),std::size_t{0});</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\"> 665</span> <span class=\"comment\">// dynamically loop rest of the children to accumulate remindng values</span></div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> <span class=\"keywordflow\">for</span>(std::size_t i = 1; i < tree.degree(); i++)</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> i_val = apply_i(i_val,i);</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> <span class=\"keywordflow\">return</span> i_val;</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> }</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"> 670</span> }();</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> </div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\"> 672</span> <span class=\"keywordflow\">return</span> visitor.post(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, in_val);</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\"> 673</span> }</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"> 674</span> </div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\"> 675</span> }</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\"> 676</span> </div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\"> 700</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Visitor, <span class=\"keyword\">typename</span> Init></div>\n+<div class=\"foldopen\" id=\"foldopen00701\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\"> 701</a></span> <span class=\"keyword\">auto</span> hybridApplyToTree(Tree&& tree, Visitor&& visitor, Init&& init)</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\"> 702</span> {</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\"> 703</span> <span class=\"keywordflow\">return</span> Impl::hybridApplyToTree(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor, init);</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\"> 704</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"> 705</span> </div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"> 706</span> } <span class=\"comment\">// namespace Experimental</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> </div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\"> 710</span>} <span class=\"comment\">//namespace Dune</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\"> 711</span> </div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\"> 712</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n+<div class=\"ttc\" id=\"aa00023_html_a5c902ae13e1b03f88e252f9fd9f85952\"><div class=\"ttname\"><a href=\"a00023.html#a5c902ae13e1b03f88e252f9fd9f85952\">child_result</a></div><div class=\"ttdeci\">static const result_type child_result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:156</div></div>\n+<div class=\"ttc\" id=\"aa00023_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01188_html\"><div class=\"ttname\"><a href=\"a01188.html\">Dune::TypeTree::FixedCapacityStackView</a></div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:22</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a00e29e07e56cf5119b3c75356f42611b\"><div class=\"ttname\"><a href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">Dune::TypeTree::FixedCapacityStackView::empty</a></div><div class=\"ttdeci\">bool empty() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:56</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a068d12e2860fa4edcf925f1958f883eb\"><div class=\"ttname\"><a href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">Dune::TypeTree::FixedCapacityStackView::full</a></div><div class=\"ttdeci\">bool full() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:61</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a1dc10f21954ae4bf7e486e00ddaf5d97\"><div class=\"ttname\"><a href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\">Dune::TypeTree::FixedCapacityStackView::operator[]</a></div><div class=\"ttdeci\">T & operator[](std::size_t k)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:102</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a1ea6108f95394f3403fe45d8307ce803\"><div class=\"ttname\"><a href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\">Dune::TypeTree::FixedCapacityStackView::pop_back</a></div><div class=\"ttdeci\">void pop_back()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:72</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a2296539c97f9bcb893300f68d7ec6948\"><div class=\"ttname\"><a href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">Dune::TypeTree::FixedCapacityStackView::back</a></div><div class=\"ttdeci\">T & back()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:78</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a5bc6ae7155dd3e9ce5537925c8cee97e\"><div class=\"ttname\"><a href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">Dune::TypeTree::FixedCapacityStackView::capacity</a></div><div class=\"ttdeci\">std::size_t capacity() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:51</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a702d594a7f3d8e2e19a560071bd85928\"><div class=\"ttname\"><a href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">Dune::TypeTree::FixedCapacityStackView::front</a></div><div class=\"ttdeci\">T & front()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:90</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_a8d191330f95f2d95bd3a7a7d9ce139e2\"><div class=\"ttname\"><a href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\">Dune::TypeTree::FixedCapacityStackView::front</a></div><div class=\"ttdeci\">const T & front() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_ab28c7823d98231062eb41c06e577fae9\"><div class=\"ttname\"><a href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\">Dune::TypeTree::FixedCapacityStackView::operator[]</a></div><div class=\"ttdeci\">const T & operator[](std::size_t k) const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:108</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_ac27fe64b7ded989da720c9afe20a221a\"><div class=\"ttname\"><a href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\">Dune::TypeTree::FixedCapacityStackView::push_back</a></div><div class=\"ttdeci\">void push_back(const T &t)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:66</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_ad4f096d379444a1fc79794ac92c3630d\"><div class=\"ttname\"><a href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\">Dune::TypeTree::FixedCapacityStackView::back</a></div><div class=\"ttdeci\">const T & back() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:84</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_adb2f90552e9a7cf6c2d4eefed39aacfb\"><div class=\"ttname\"><a href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">Dune::TypeTree::FixedCapacityStackView::size</a></div><div class=\"ttdeci\">std::size_t size() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:46</div></div>\n-<div class=\"ttc\" id=\"aa01188_html_ade25e3245a230df58d4beb64e1ef1862\"><div class=\"ttname\"><a href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\">Dune::TypeTree::FixedCapacityStackView::FixedCapacityStackView</a></div><div class=\"ttdeci\">FixedCapacityStackView(Impl &impl)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:40</div></div>\n-<div class=\"ttc\" id=\"aa01196_html\"><div class=\"ttname\"><a href=\"a01196.html\">Dune::TypeTree::FixedCapacityStack</a></div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:125</div></div>\n-<div class=\"ttc\" id=\"aa01196_html_a679edaa9c21f3293350bd5cb702755bf\"><div class=\"ttname\"><a href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\">Dune::TypeTree::FixedCapacityStack::FixedCapacityStack</a></div><div class=\"ttdeci\">FixedCapacityStack()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:136</div></div>\n+<div class=\"ttc\" id=\"aa00924_html\"><div class=\"ttname\"><a href=\"a00924.html\">Dune::TypeTree::or_</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using ||.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa00928_html\"><div class=\"ttname\"><a href=\"a00928.html\">Dune::TypeTree::or_::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:30</div></div>\n+<div class=\"ttc\" id=\"aa00928_html_aa7bdb909ef8b0ea752dddd340160c3c7\"><div class=\"ttname\"><a href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\">Dune::TypeTree::or_::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:31</div></div>\n+<div class=\"ttc\" id=\"aa00932_html\"><div class=\"ttname\"><a href=\"a00932.html\">Dune::TypeTree::and_</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using &&.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:38</div></div>\n+<div class=\"ttc\" id=\"aa00936_html\"><div class=\"ttname\"><a href=\"a00936.html\">Dune::TypeTree::and_::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:41</div></div>\n+<div class=\"ttc\" id=\"aa00936_html_afd5aa82afbde5032ac7179be2e71584c\"><div class=\"ttname\"><a href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\">Dune::TypeTree::and_::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:42</div></div>\n+<div class=\"ttc\" id=\"aa00940_html\"><div class=\"ttname\"><a href=\"a00940.html\">Dune::TypeTree::plus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using +.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa00944_html\"><div class=\"ttname\"><a href=\"a00944.html\">Dune::TypeTree::plus::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:52</div></div>\n+<div class=\"ttc\" id=\"aa00944_html_a2cb0d4f361c931ef4c0d8620b7e12c1a\"><div class=\"ttname\"><a href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\">Dune::TypeTree::plus::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:53</div></div>\n+<div class=\"ttc\" id=\"aa00948_html\"><div class=\"ttname\"><a href=\"a00948.html\">Dune::TypeTree::minus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using -.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:60</div></div>\n+<div class=\"ttc\" id=\"aa00952_html\"><div class=\"ttname\"><a href=\"a00952.html\">Dune::TypeTree::minus::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:63</div></div>\n+<div class=\"ttc\" id=\"aa00952_html_a2addd41cf0fa10cd396af23943fe4c84\"><div class=\"ttname\"><a href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\">Dune::TypeTree::minus::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:64</div></div>\n+<div class=\"ttc\" id=\"aa00956_html\"><div class=\"ttname\"><a href=\"a00956.html\">Dune::TypeTree::multiply</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using *.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:71</div></div>\n+<div class=\"ttc\" id=\"aa00960_html\"><div class=\"ttname\"><a href=\"a00960.html\">Dune::TypeTree::multiply::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:74</div></div>\n+<div class=\"ttc\" id=\"aa00960_html_a5c5780fd11bf490ab76234a9f987544a\"><div class=\"ttname\"><a href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\">Dune::TypeTree::multiply::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:75</div></div>\n+<div class=\"ttc\" id=\"aa00964_html\"><div class=\"ttname\"><a href=\"a00964.html\">Dune::TypeTree::min</a></div><div class=\"ttdoc\">Statically combine two values of type result_type by returning their minimum.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:82</div></div>\n+<div class=\"ttc\" id=\"aa00968_html\"><div class=\"ttname\"><a href=\"a00968.html\">Dune::TypeTree::min::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:85</div></div>\n+<div class=\"ttc\" id=\"aa00968_html_a0626bec9ba3e55463234f5d25b3dd20b\"><div class=\"ttname\"><a href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\">Dune::TypeTree::min::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:86</div></div>\n+<div class=\"ttc\" id=\"aa00972_html\"><div class=\"ttname\"><a href=\"a00972.html\">Dune::TypeTree::max</a></div><div class=\"ttdoc\">Statically combine two values of type result_type by returning their maximum.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:93</div></div>\n+<div class=\"ttc\" id=\"aa00976_html\"><div class=\"ttname\"><a href=\"a00976.html\">Dune::TypeTree::max::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa00976_html_a2dc2d647efdb98bbf23e8c450f753abd\"><div class=\"ttname\"><a href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\">Dune::TypeTree::max::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:97</div></div>\n+<div class=\"ttc\" id=\"aa01016_html\"><div class=\"ttname\"><a href=\"a01016.html\">Dune::TypeTree::AccumulateValue</a></div><div class=\"ttdoc\">Statically accumulate a value over the nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:262</div></div>\n+<div class=\"ttc\" id=\"aa01016_html_aaf6841863a3afd53a49b33d969449928\"><div class=\"ttname\"><a href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">Dune::TypeTree::AccumulateValue::result_type</a></div><div class=\"ttdeci\">Functor::result_type result_type</div><div class=\"ttdoc\">The result type of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:265</div></div>\n+<div class=\"ttc\" id=\"aa01016_html_ad857a652ea6f4f4ee1e1b7b367c0dbb3\"><div class=\"ttname\"><a href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">Dune::TypeTree::AccumulateValue::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdoc\">The accumulated result of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:268</div></div>\n+<div class=\"ttc\" id=\"aa01068_html\"><div class=\"ttname\"><a href=\"a01068.html\">Dune::TypeTree::TypeAccumulationPolicy</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:469</div></div>\n+<div class=\"ttc\" id=\"aa01068_html_a267f825310089246c7f3cf82a464944a\"><div class=\"ttname\"><a href=\"a01068.html#a267f825310089246c7f3cf82a464944a\">Dune::TypeTree::TypeAccumulationPolicy::parent_child_reduction</a></div><div class=\"ttdeci\">ParentChildReduction parent_child_reduction</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:527</div></div>\n+<div class=\"ttc\" id=\"aa01068_html_a3b1a56207cb93b1ce51d6ce8d820815d\"><div class=\"ttname\"><a href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\">Dune::TypeTree::TypeAccumulationPolicy::functor</a></div><div class=\"ttdeci\">Functor functor</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:498</div></div>\n+<div class=\"ttc\" id=\"aa01068_html_a69d3cdc5a0b494eb8d9927ecd6b6bdb3\"><div class=\"ttname\"><a href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\">Dune::TypeTree::TypeAccumulationPolicy::start_type</a></div><div class=\"ttdeci\">StartType start_type</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:535</div></div>\n+<div class=\"ttc\" id=\"aa01068_html_a7658a27585345f9fe379367fed06349c\"><div class=\"ttname\"><a href=\"a01068.html#a7658a27585345f9fe379367fed06349c\">Dune::TypeTree::TypeAccumulationPolicy::reduction_strategy</a></div><div class=\"ttdeci\">ReductionAlgorithm reduction_strategy</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:541</div></div>\n+<div class=\"ttc\" id=\"aa01068_html_aae2cb32304e014e5be96fc979737f65e\"><div class=\"ttname\"><a href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\">Dune::TypeTree::TypeAccumulationPolicy::sibling_reduction</a></div><div class=\"ttdeci\">Reduction sibling_reduction</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:519</div></div>\n+<div class=\"ttc\" id=\"aa01072_html\"><div class=\"ttname\"><a href=\"a01072.html\">Dune::TypeTree::AccumulateType</a></div><div class=\"ttdoc\">Statically accumulate a type over the nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:556</div></div>\n+<div class=\"ttc\" id=\"aa01072_html_a477d6851a80a598acc517ded10b851ed\"><div class=\"ttname\"><a href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\">Dune::TypeTree::AccumulateType::type</a></div><div class=\"ttdeci\">accumulate_type< Tree, Policy, typenamePolicy::start_type, HybridTreePath<>, NodeTag< Tree > >::type type</div><div class=\"ttdoc\">The accumulated result of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:565</div></div>\n+<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,211 +1,698 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-fixedcapacitystack.hh\n+accumulate_static.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=8 sw=2 sts=2:\n+1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n-7#define DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n+6#ifndef DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n+7#define DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n 8\n-9#include <array>\n-10#include <cassert>\n-11\n-12namespace _\bD_\bu_\bn_\be {\n-13 namespace TypeTree {\n+9#include <dune/common/typetraits.hh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n 14\n 15\n-19\n-20 template<typename T>\n-_\b2_\b1 class _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n-22 {\n-23\n-24 public:\n-25\n-26 struct Impl\n+_\b1_\b6namespace _\bD_\bu_\bn_\be {\n+_\b1_\b7 namespace TypeTree {\n+18\n+25 template<typename result_type>\n+_\b2_\b6 struct _\bo_\br_\b_\n 27 {\n-28\n-29 Impl(T* data, std::size_t _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n-30 : _data(data)\n-31 , _size(0)\n-32 , _capacity(_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n-33 {}\n+28 template<result_type r1, result_type r2>\n+_\b2_\b9 struct _\br_\be_\bd_\bu_\bc_\be\n+30 {\n+_\b3_\b1 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 || r2;\n+32 };\n+33 };\n 34\n-35 T * const _data;\n-36 std::size_t _size;\n-37 const std::size_t _capacity;\n-38 };\n-39\n-_\b4_\b0 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw(Impl& impl)\n-41 : _impl(impl)\n-42 {}\n-43\n-44 public:\n+36 template<typename result_type>\n+_\b3_\b7 struct _\ba_\bn_\bd_\b_\n+38 {\n+39 template<result_type r1, result_type r2>\n+_\b4_\b0 struct _\br_\be_\bd_\bu_\bc_\be\n+41 {\n+_\b4_\b2 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 && r2;\n+43 };\n+44 };\n 45\n-_\b4_\b6 std::size_t _\bs_\bi_\bz_\be() const\n-47 {\n-48 return _impl._size;\n-49 }\n-50\n-_\b5_\b1 std::size_t _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by() const\n+47 template<typename result_type>\n+_\b4_\b8 struct _\bp_\bl_\bu_\bs\n+49 {\n+50 template<result_type r1, result_type r2>\n+_\b5_\b1 struct _\br_\be_\bd_\bu_\bc_\be\n 52 {\n-53 return _impl._capacity;\n-54 }\n-55\n-_\b5_\b6 bool _\be_\bm_\bp_\bt_\by() const\n-57 {\n-58 return _impl._size == 0;\n-59 }\n-60\n-_\b6_\b1 bool _\bf_\bu_\bl_\bl() const\n-62 {\n-63 return _impl._size == _impl._capacity;\n-64 }\n-65\n-_\b6_\b6 void _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(const T& t)\n-67 {\n-68 assert(!_\bf_\bu_\bl_\bl());\n-69 _impl._data[_impl._size++] = t;\n-70 }\n-71\n-_\b7_\b2 void _\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk()\n-73 {\n-74 assert(!_\be_\bm_\bp_\bt_\by());\n-75 --_impl._size;\n-76 }\n-77\n-_\b7_\b8 T& _\bb_\ba_\bc_\bk()\n-79 {\n-80 assert(!_\be_\bm_\bp_\bt_\by());\n-81 return _impl._data[_impl._size-1];\n-82 }\n-83\n-_\b8_\b4 const T& _\bb_\ba_\bc_\bk() const\n+_\b5_\b3 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 + r2;\n+54 };\n+55 };\n+56\n+58 template<typename result_type>\n+_\b5_\b9 struct _\bm_\bi_\bn_\bu_\bs\n+60 {\n+61 template<result_type r1, result_type r2>\n+_\b6_\b2 struct _\br_\be_\bd_\bu_\bc_\be\n+63 {\n+_\b6_\b4 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 - r2;\n+65 };\n+66 };\n+67\n+69 template<typename result_type>\n+_\b7_\b0 struct _\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by\n+71 {\n+72 template<result_type r1, result_type r2>\n+_\b7_\b3 struct _\br_\be_\bd_\bu_\bc_\be\n+74 {\n+_\b7_\b5 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 * r2;\n+76 };\n+77 };\n+78\n+80 template<typename result_type>\n+_\b8_\b1 struct _\bm_\bi_\bn\n+82 {\n+83 template<result_type r1, result_type r2>\n+_\b8_\b4 struct _\br_\be_\bd_\bu_\bc_\be\n 85 {\n-86 assert(!_\be_\bm_\bp_\bt_\by());\n-87 return _impl._data[_impl._size-1];\n-88 }\n+_\b8_\b6 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 < r2 ? r1 : r2;\n+87 };\n+88 };\n 89\n-_\b9_\b0 T& _\bf_\br_\bo_\bn_\bt()\n-91 {\n-92 assert(!_\be_\bm_\bp_\bt_\by());\n-93 return _impl._data[0];\n-94 }\n-95\n-_\b9_\b6 const T& _\bf_\br_\bo_\bn_\bt() const\n-97 {\n-98 assert(!_\be_\bm_\bp_\bt_\by());\n-99 return _impl._data[0];\n-100 }\n+91 template<typename result_type>\n+_\b9_\b2 struct _\bm_\ba_\bx\n+93 {\n+94 template<result_type r1, result_type r2>\n+_\b9_\b5 struct _\br_\be_\bd_\bu_\bc_\be\n+96 {\n+_\b9_\b7 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 > r2 ? r1 : r2;\n+98 };\n+99 };\n+100\n 101\n-_\b1_\b0_\b2 T& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t k)\n-103 {\n-104 assert(k < _impl._size);\n-105 return _impl._data[k];\n-106 }\n-107\n-_\b1_\b0_\b8 const T& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t k) const\n+102 namespace {\n+103\n+104 // implementation of the traversal algorithm\n+105\n+107 template<typename Node, typename Functor, typename Reduction, typename\n+Functor::result_type current_value, typename TreePath, bool doVisit>\n+108 struct accumulate_node_helper\n 109 {\n-110 assert(k < _impl._size);\n-111 return _impl._data[k];\n-112 }\n-113\n-114 private:\n-115 Impl& _impl;\n+110\n+111 typedef typename Functor::result_type result_type;\n+112\n+_\b1_\b1_\b3 static const result_type _\br_\be_\bs_\bu_\bl_\bt = current_value;\n+114\n+115 };\n 116\n-117 };\n-118\n-119\n-120 template<typename T, std::size_t capacity>\n-_\b1_\b2_\b1 class _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n-122 : private std::array<T,capacity>\n-123 , private _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl\n-124 , public _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>\n-125 {\n-126\n-127 typedef _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b<_\bT_\b> _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be;\n-128\n-129 public:\n-130\n-131 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bc_\bk;\n-132 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt;\n-133 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bs_\bi_\bz_\be;\n-134 using view_base::operator[];\n-135\n-_\b1_\b3_\b6 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk()\n-137 : _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl(&(static_cast<std::array<T,_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by>&>\n-(*this)[0]),_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n-138 , _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>(static_cast<typename\n-_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl&>(*this))\n-139 {}\n+118 template<typename Node, typename Functor, typename Reduction, typename\n+Functor::result_type current_value, typename TreePath>\n+119 struct\n+accumulate_node_helper<Node,Functor,Reduction,current_value,TreePath,true>\n+120 {\n+121\n+122 typedef typename Functor::result_type result_type;\n+123\n+124 static const result_type _\br_\be_\bs_\bu_\bl_\bt = Reduction::template\n+reduce<current_value,Functor::template visit<Node,TreePath>::result>::result;\n+125\n+126 };\n+127\n+129 template<typename Tree, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath, typename Tag>\n+130 struct accumulate_value;\n+131\n+133 template<typename LeafNode, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath>\n+134 struct\n+accumulate_value<LeafNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,LeafNodeTag>\n+135 {\n+136\n+137 typedef typename Functor::result_type result_type;\n+138\n+139 static const result_type _\br_\be_\bs_\bu_\bl_\bt =\n 140\n-141 private:\n+141\n+accumulate_node_helper<LeafNode,Functor,Reduction,current_value,TreePath,Functor::\n+template doVisit<LeafNode,TreePath>::value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n 142\n-143 //FixedCapacityStack(const FixedCapacityStack&);\n-144 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk& operator=(const _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk&);\n-145\n-146 };\n-147\n+143 };\n+144\n+146 template<typename Node, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath, std::size_t i, std::size_t n>\n+147 struct accumulate_over_children\n+148 {\n 149\n-150 } // namespace TypeTree\n-151} //namespace Dune\n-152\n-153#endif // DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n+150 typedef typename Functor::result_type result_type;\n+151\n+152 typedef decltype(_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(TreePath{},index_constant<i>{}))\n+child_tree_path;\n+153\n+154 typedef typename Node::template _\bC_\bh_\bi_\bl_\bd<i>::Type child;\n+155\n+_\b1_\b5_\b6 static const result_type child_result =\n+accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,_\bN_\bo_\bd_\be_\bT_\ba_\bg<child>>::\n+result;\n+157\n+158 static const result_type result =\n+accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,child_result,TreePath,i+1,n>::\n+result;\n+159\n+160 };\n+161\n+163 template<typename Node, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath, std::size_t n>\n+164 struct\n+accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,n,n>\n+165 {\n+166\n+167 typedef typename Functor::result_type result_type;\n+168\n+169 static const result_type _\br_\be_\bs_\bu_\bl_\bt = current_value;\n+170\n+171 };\n+172\n+175 template<typename Node, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath>\n+176 struct accumulate_value_generic_composite_node\n+177 {\n+178\n+179 typedef typename Functor::result_type result_type;\n+180\n+181 static const result_type _\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bs_\bu_\bl_\bt =\n+accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,0,StaticDegree<Node>::\n+value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n+182\n+183 static const result_type _\br_\be_\bs_\bu_\bl_\bt =\n+184\n+accumulate_node_helper<Node,Functor,ParentChildReduction,child_result,TreePath,Functor::\n+template doVisit<Node,TreePath>::value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n+185\n+186\n+187 };\n+188\n+190 template<typename PowerNode, typename Functor, typename Reduction, typename\n+ParentChildReduction, typename Functor::result_type current_value, typename\n+TreePath>\n+191 struct\n+accumulate_value<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,PowerNodeTag>\n+192 : public\n+accumulate_value_generic_composite_node<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>\n+193 {};\n+194\n+196 template<typename CompositeNode, typename Functor, typename Reduction,\n+typename ParentChildReduction, typename Functor::result_type current_value,\n+typename TreePath>\n+197 struct\n+accumulate_value<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,CompositeNodeTag>\n+198 : public\n+accumulate_value_generic_composite_node<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>\n+199 {};\n+200\n+201 } // anonymous namespace\n+202\n+204\n+260 template<typename Tree, typename Functor, typename Reduction, typename\n+Functor::result_type startValue, typename ParentChildReduction = Reduction>\n+_\b2_\b6_\b1 struct _\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be\n+262 {\n+263\n+_\b2_\b6_\b5 typedef typename Functor::result_type _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be;\n+266\n+_\b2_\b6_\b8 static const _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be _\br_\be_\bs_\bu_\bl_\bt =\n+accumulate_value<Tree,Functor,Reduction,ParentChildReduction,startValue,HybridTreePath<>,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>>_\b:_\b:\n+_\br_\be_\bs_\bu_\bl_\bt;\n+269\n+270 };\n+271\n+274 struct flattened_reduction;\n+275\n+278 struct bottom_up_reduction;\n+279\n+280 namespace {\n+281\n+282 // implementation of the traversal algorithm\n+283\n+286 template<typename Node, typename Functor, typename Reduction, typename\n+current_type, typename TreePath, bool doVisit>\n+287 struct accumulate_type_node_helper\n+288 {\n+289\n+290 typedef current_type type;\n+291\n+292 };\n+293\n+295 template<typename Node, typename Functor, typename Reduction, typename\n+current_type, typename TreePath>\n+296 struct\n+accumulate_type_node_helper<Node,Functor,Reduction,current_type,TreePath,true>\n+297 {\n+298\n+299 typedef typename Reduction::template reduce<\n+300 current_type,\n+301 typename Functor::template visit<\n+302 Node,\n+303 TreePath\n+304 >::type\n+305 >::type type;\n+306\n+307 };\n+308\n+310 template<typename Tree, typename Policy, typename current_type, typename\n+TreePath, typename Tag>\n+311 struct accumulate_type;\n+312\n+314 template<typename LeafNode, typename Policy, typename current_type,\n+typename TreePath>\n+315 struct accumulate_type<LeafNode,Policy,current_type,TreePath,LeafNodeTag>\n+316 {\n+317\n+318 typedef typename accumulate_type_node_helper<\n+319 LeafNode,\n+320 typename Policy::functor,\n+321 typename Policy::sibling_reduction,\n+322 current_type,\n+323 TreePath,\n+324 Policy::functor::template doVisit<\n+325 LeafNode,\n+326 TreePath>::value\n+327 >::type type;\n+328\n+329 };\n+330\n+331\n+334 template<typename current_type, typename tree_path, typename start_type,\n+typename reduction_strategy>\n+335 struct propagate_type_down_tree;\n+336\n+338 template<typename current_type, typename tree_path, typename start_type>\n+339 struct propagate_type_down_tree<\n+340 current_type,\n+341 tree_path,\n+342 start_type,\n+343 bottom_up_reduction\n+344 >\n+345 {\n+346 typedef current_type type;\n+347 };\n+348\n+350 template<typename current_type, typename tree_path, typename start_type>\n+351 struct propagate_type_down_tree<\n+352 current_type,\n+353 tree_path,\n+354 start_type,\n+355 flattened_reduction\n+356 >\n+357 {\n+358 typedef typename std::conditional<\n+359 TreePathBack<tree_path>::value == 0,\n+360 start_type,\n+361 current_type\n+362 >::type type;\n+363 };\n+364\n+365\n+367 template<typename Node, typename Policy, typename current_type, typename\n+TreePath, std::size_t i, std::size_t n>\n+368 struct accumulate_type_over_children\n+369 {\n+370\n+371 typedef decltype(_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(TreePath{},index_constant<i>{}))\n+child_tree_path;\n+372\n+373 typedef typename Node::template Child<i>::Type child;\n+374\n+375 typedef typename accumulate_type<\n+376 child,\n+377 Policy,\n+378 // apply reduction choice (flat / hierarchic)\n+379 typename propagate_type_down_tree<\n+380 current_type,\n+381 child_tree_path,\n+382 typename Policy::start_type,\n+383 typename Policy::reduction_strategy\n+384 >::type,\n+385 child_tree_path,\n+386 NodeTag<child>\n+387 >::type child_result_type;\n+388\n+389 typedef typename accumulate_type_over_children<\n+390 Node,\n+391 Policy,\n+392 child_result_type,\n+393 TreePath,\n+394 i+1,\n+395 n\n+396 >::type type;\n+397\n+398 };\n+399\n+401 template<typename Node, typename Policy, typename current_type, typename\n+TreePath, std::size_t n>\n+402 struct accumulate_type_over_children<Node,Policy,current_type,TreePath,n,n>\n+403 {\n+404\n+405 typedef current_type type;\n+406\n+407 };\n+408\n+409\n+412 template<typename Node, typename Policy, typename current_type, typename\n+TreePath>\n+413 struct accumulate_type_generic_composite_node\n+414 {\n+415\n+416 typedef typename accumulate_type_over_children<\n+417 Node,\n+418 Policy,\n+419 current_type,\n+420 TreePath,\n+421 0,\n+422 StaticDegree<Node>::value\n+423 >::type children_result_type;\n+424\n+425 typedef typename accumulate_type_node_helper<\n+426 Node,\n+427 typename Policy::functor,\n+428 typename Policy::parent_child_reduction,\n+429 children_result_type,\n+430 TreePath,\n+431 Policy::functor::template doVisit<\n+432 Node,\n+433 TreePath\n+434 >::value\n+435 >::type type;\n+436\n+437 };\n+438\n+440 template<typename PowerNode, typename Policy, typename current_type,\n+typename TreePath>\n+441 struct accumulate_type<PowerNode,Policy,current_type,TreePath,PowerNodeTag>\n+442 : public\n+accumulate_type_generic_composite_node<PowerNode,Policy,current_type,TreePath>\n+443 {};\n+444\n+446 template<typename CompositeNode, typename Policy, typename current_type,\n+typename TreePath>\n+447 struct\n+accumulate_type<CompositeNode,Policy,current_type,TreePath,CompositeNodeTag>\n+448 : public\n+accumulate_type_generic_composite_node<CompositeNode,Policy,current_type,TreePath>\n+449 {};\n+450\n+451 } // anonymous namespace\n+452\n+453\n+461 template<\n+462 typename Functor,\n+463 typename Reduction,\n+464 typename StartType,\n+465 typename ParentChildReduction = Reduction,\n+466 typename ReductionAlgorithm = flattened_reduction\n+467 >\n+_\b4_\b6_\b8 struct _\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by\n+469 {\n+470\n+_\b4_\b9_\b8 typedef Functor _\bf_\bu_\bn_\bc_\bt_\bo_\br;\n+499\n+_\b5_\b1_\b9 typedef Reduction _\bs_\bi_\bb_\bl_\bi_\bn_\bg_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n+520\n+_\b5_\b2_\b7 typedef ParentChildReduction _\bp_\ba_\br_\be_\bn_\bt_\b__\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n+528\n+_\b5_\b3_\b5 typedef StartType _\bs_\bt_\ba_\br_\bt_\b__\bt_\by_\bp_\be;\n+536\n+_\b5_\b4_\b1 typedef ReductionAlgorithm _\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\ba_\bt_\be_\bg_\by;\n+542 };\n+543\n+544\n+546\n+554 template<typename Tree, typename Policy>\n+_\b5_\b5_\b5 struct _\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be\n+556 {\n+557\n+559 typedef typename accumulate_type<\n+560 Tree,\n+561 Policy,\n+562 typename Policy::start_type,\n+563 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b>,\n+564 _\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>\n+_\b5_\b6_\b5 >::type _\bt_\by_\bp_\be;\n+566\n+567 };\n+568\n+569\n+570\n+571\n+572\n+573 /***************************************************/\n+574\n+_\b5_\b7_\b5 namespace Experimental {\n+576 namespace Impl {\n+577\n+579 template<class T, class TreePath, class V, class U,\n+580 std::enable_if_t<std::decay_t<T>::isLeaf, int> = 0>\n+581 auto hybridApplyToTree(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor, U&&\n+current_val)\n+582 {\n+583 return visitor.leaf(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::forward<U>(current_val));\n+584 }\n+585\n+587 template<class T, class TreePath, class V, class U,\n+588 std::enable_if_t<not std::decay_t<T>::isLeaf, int> = 0>\n+589 auto hybridApplyToTree(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor, U&&\n+current_val)\n+590 {\n+591 using Tree = std::remove_reference_t<T>;\n+592 using Visitor = std::remove_reference_t<V>;\n+593 auto pre_val = visitor.pre(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::forward<U>(current_val));\n+594\n+595 // check which type of traversal is supported by the tree\n+596 using allowDynamicTraversal = Dune::Std::is_detected<Detail::\n+DynamicTraversalConcept,Tree>;\n+597 using allowStaticTraversal = Dune::Std::is_detected<Detail::\n+StaticTraversalConcept,Tree>;\n+598\n+599 // the tree must support either dynamic or static traversal\n+600 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n+601\n+602 // the visitor may specify preferred dynamic traversal\n+603 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n+TreePathType::dynamic>;\n+604\n+605 // declare rule that applies visitor and current value to a child i.\n+Returns next value\n+606 auto apply_i = [&](auto&& value, const auto& i){\n+607 auto&& _\bc_\bh_\bi_\bl_\bd = tree.child(i);\n+608 using _\bC_\bh_\bi_\bl_\bd = std::decay_t<decltype(_\bc_\bh_\bi_\bl_\bd)>;\n+609\n+610 auto val_before = visitor.beforeChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i, std::move\n+(value));\n+611\n+612 // visits between children\n+613 auto val_in = Hybrid::ifElse(\n+614 Hybrid::equal_to(i,Indices::_0),\n+615 [&](auto id){return std::move(val_before);},\n+616 [&](auto id){return visitor.in(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::move(val_before));}\n+617 );\n+618\n+619 constexpr bool visitChild = Visitor::template\n+VisitChild<Tree,Child,TreePath>::value;\n+620 auto val_visit = [&](){\n+621 if constexpr (visitChild) {\n+622 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+623 return hybridApplyToTree(_\bc_\bh_\bi_\bl_\bd, childTreePath, visitor, std::move(val_in));\n+624 }\n+625 else\n+626 return std::move(val_in);\n+627 }();\n+628\n+629 return visitor.afterChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i, std::move(val_visit));\n+630 };\n+631\n+632 // apply visitor to children\n+633 auto in_val = [&](){\n+634 if constexpr (allowStaticTraversal::value && not preferDynamicTraversal::\n+value) {\n+635 // get list of static indices\n+636 auto indices = std::make_index_sequence<Tree::degree()>{};\n+637\n+638 // unfold apply_i left to right\n+639 return unpackIntegerSequence([&](auto... i) {\n+659 return left_fold(std::move(apply_i),std::move(pre_val), i...);\n+660 }, indices);\n+661\n+662 } else {\n+663 // unfold first child to get type\n+664 auto i_val = apply_i(std::move(pre_val),std::size_t{0});\n+665 // dynamically loop rest of the children to accumulate remindng values\n+666 for(std::size_t i = 1; i < tree.degree(); i++)\n+667 i_val = apply_i(i_val,i);\n+668 return i_val;\n+669 }\n+670 }();\n+671\n+672 return visitor.post(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, in_val);\n+673 }\n+674\n+675 }\n+676\n+700 template<typename Tree, typename Visitor, typename Init>\n+_\b7_\b0_\b1 auto hybridApplyToTree(Tree&& tree, Visitor&& visitor, Init&& init)\n+702 {\n+703 return Impl::hybridApplyToTree(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor, init);\n+704 }\n+705\n+706 } // namespace Experimental\n+707\n+709 } // namespace TypeTree\n+710} //namespace Dune\n+711\n+712#endif // DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n+_\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bs_\bu_\bl_\bt\n+static const result_type child_result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:156\n+_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n+_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+typename impl::_Child< Node, indices... >::type Child\n+Template alias for the type of a child node given by a list of child indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+typename std::decay_t< Node >::NodeTag NodeTag\n+Returns the node tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n+T... > &tp, std::size_t i)\n+Appends a run time index to a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto hybridTreePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\be_\bm_\bp_\bt_\by\n-bool empty() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\bu_\bl_\bl\n-bool full() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-T & operator[](std::size_t k)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk\n-void pop_back()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bb_\ba_\bc_\bk\n-T & back()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by\n-std::size_t capacity() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\br_\bo_\bn_\bt\n-T & front()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\br_\bo_\bn_\bt\n-const T & front() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const T & operator[](std::size_t k) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-void push_back(const T &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bb_\ba_\bc_\bk\n-const T & back() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n-FixedCapacityStackView(Impl &impl)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n-FixedCapacityStack()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b_\n+Statically combine two values of type result_type using ||.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b_\n+Statically combine two values of type result_type using &&.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs\n+Statically combine two values of type result_type using +.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs\n+Statically combine two values of type result_type using -.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by\n+Statically combine two values of type result_type using *.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn\n+Statically combine two values of type result_type by returning their minimum.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx\n+Statically combine two values of type result_type by returning their maximum.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be\n+Statically accumulate a value over the nodes of a TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:262\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be\n+Functor::result_type result_type\n+The result type of the computation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:265\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+The accumulated result of the computation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:469\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bp_\ba_\br_\be_\bn_\bt_\b__\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n+ParentChildReduction parent_child_reduction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:527\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bf_\bu_\bn_\bc_\bt_\bo_\br\n+Functor functor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bs_\bt_\ba_\br_\bt_\b__\bt_\by_\bp_\be\n+StartType start_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:535\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\ba_\bt_\be_\bg_\by\n+ReductionAlgorithm reduction_strategy\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:541\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bs_\bi_\bb_\bl_\bi_\bn_\bg_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n+Reduction sibling_reduction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:519\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be\n+Statically accumulate a type over the nodes of a TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:556\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be_\b:_\b:_\bt_\by_\bp_\be\n+accumulate_type< Tree, Policy, typenamePolicy::start_type, HybridTreePath<>,\n+NodeTag< Tree > >::type type\n+The accumulated result of the computation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:565\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+A hybrid version of TreePath that supports both compile time and run time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00026.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00026.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: compositenode.hh File Reference</title>\n+<title>dune-typetree: dynamicpowernode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,33 +72,33 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">compositenode.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">dynamicpowernode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <tuple></code><br />\n+<div class=\"textblock\"><code>#include <cassert></code><br />\n+<code>#include <vector></code><br />\n <code>#include <memory></code><br />\n <code>#include <type_traits></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <dune/common/std/type_traits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n </div>\n <p><a href=\"a00026_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01076.html\">Dune::TypeTree::CompositeNode< Children ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for composite nodes based on variadic templates. <a href=\"a01076.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01080.html\">Dune::TypeTree::CompositeNode< Children >::Child< k ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01080.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01084.html\">Dune::TypeTree::DynamicPowerNode< T ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Collect multiple instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01084.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,28 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-compositenode.hh File Reference\n-#include <tuple>\n+dynamicpowernode.hh File Reference\n+#include <cassert>\n+#include <vector>\n #include <memory>\n #include <type_traits>\n+#include <dune/common/typetraits.hh>\n+#include <dune/common/std/type_traits.hh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n-\u00a0 Base class for composite nodes based on variadic templates. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n-\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b _\b>\n+\u00a0 Collect multiple instances of type T within a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00026_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00026_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: compositenode.hh Source File</title>\n+<title>dune-typetree: dynamicpowernode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,268 +74,221 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">compositenode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">dynamicpowernode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00026.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <tuple></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/childextraction.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00044.html\">dune/typetree/typetraits.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <vector></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n <div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children></div>\n-<div class=\"foldopen\" id=\"foldopen00027\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html\"> 27</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01076.html\">CompositeNode</a></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> {</div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\"> 33</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> <a class=\"code hl_typedef\" href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\">NodeTag</a>;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\"> 36</a></span> <span class=\"keyword\">typedef</span> std::tuple<std::shared_ptr<Children>... > <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\"> 39</a></span> <span class=\"keyword\">typedef</span> std::tuple<Children...> <a class=\"code hl_typedef\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">ChildTypes</a>;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\"> 45</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\"> 48</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\">isComposite</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\"> 50</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a> ()</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,<span class=\"keyword\">sizeof</span>...(Children)>{};</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00057\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html\"> 57</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01080.html\">Child</a> {</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">static_assert</span>((k < <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\"> 62</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,ChildTypes>::type <a class=\"code hl_typedef\" href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\">Type</a>;</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\"> 65</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,ChildTypes>::type <a class=\"code hl_typedef\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> </div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00014.html\">dune/typetree/typetraits.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html\"> 34</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01084.html\">DynamicPowerNode</a></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\"> 40</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\"> 43</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\">isPower</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\"> 46</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\"> 49</a></span> std::size_t <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keywordflow\">return</span> _children.size();</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\"> 55</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a> <a class=\"code hl_typedef\" href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\"> 58</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\"> 61</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<T> <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\"> 64</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<const T> <a class=\"code hl_typedef\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">ChildConstStorageType</a>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\"> 67</a></span> <span class=\"keyword\">typedef</span> std::vector<ChildStorageType> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00076\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\"> 76</a></span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> {</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keywordflow\">return</span> *std::get<k>(_children);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\"> 77</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& <a class=\"code hl_function\" href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\">child</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> {</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> </div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\"> 86</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> {</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keywordflow\">return</span> *std::get<k>(_children);</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00087\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\"> 87</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& <a class=\"code hl_function\" href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n <div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\"> 96</a></span> std::shared_ptr<typename Child<k>::Type> <a class=\"code hl_function\" href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\">childStorage</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> {</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keywordflow\">return</span> std::get<k>(_children);</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> }</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\"> 97</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a> <a class=\"code hl_function\" href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\">childStorage</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> {</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n <div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\"> 106</a></span> std::shared_ptr<const typename Child<k>::Type> <a class=\"code hl_function\" href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> {</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> <span class=\"keywordflow\">return</span> std::get<k>(_children);</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\"> 113</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\">setChild</a> (<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> std::get<k>(_children) = stackobject_to_shared_ptr(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>);</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\"> 120</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\">setChild</a> (<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>&& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> {</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> std::get<k>(_children) = convert_arg(std::move(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>));</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00127\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\"> 127</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\">setChild</a> (std::shared_ptr<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>> <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> std::get<k>(_children) = std::move(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00132\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\"> 132</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keywordflow\">return</span> _children;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00110\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\"> 110</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">ChildConstStorageType</a> <a class=\"code hl_function\" href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\"> 117</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& t)</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\"> 124</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>&& t)</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> _children[i] = convert_arg(std::move(t));</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\"> 131</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a> st)</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> {</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> _children[i] = std::move(st);</div>\n <div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> }</div>\n </div>\n <div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00137\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\"> 137</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keywordflow\">return</span> _children;</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"comment\">// The following two methods require a little bit of SFINAE trickery to work correctly:</span></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">// We have to make sure that they don't shadow the methods for direct child access because</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"comment\">// those get called by the generic child() machinery. If that machinery picks up the methods</span></div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"comment\">// defined below, we have an infinite recursion.</span></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"comment\">// So the methods make sure that either</span></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"comment\">// * there are more than one argument. In that case, we got multiple indices and can forward</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"comment\">// to the general machine.</span></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"comment\">// * the first argument is not a valid flat index, i.e. either a std::size_t or an index_constant.</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"comment\">// The argument thus has to be some kind of TreePath instance that we can also pass to the</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"comment\">// generic machine.</span></div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"comment\">// The above SFINAE logic works, but there is still a problem with the return type deduction.</span></div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> <span class=\"comment\">// We have to do a lazy lookup of the return type after SFINAE has succeeded, otherwise the return</span></div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"comment\">// type deduction will trigger the infinite recursion.</span></div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"foldopen\" id=\"foldopen00166\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\"> 166</a></span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\">child</a> (Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (I0 i0, I... i)</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> {</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> );</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> }</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\"> 151</a></span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> () = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00162\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\"> 162</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\">DynamicPowerNode</a> (std::size_t size)</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> : _children(size)</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00167\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\"> 167</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\">DynamicPowerNode</a> (<a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a> children)</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> : _children(std::move(children))</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00174\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\"> 174</a></span> <a class=\"code hl_function\" href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\">DynamicPowerNode</a> (T& t1, T& t2, ...)</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> {}</div>\n </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span><span class=\"preprocessor\">#else</span></div>\n <div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\"> 186</a></span> <span class=\"keyword\">const</span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\">child</a> (Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (I0 i0, I... i) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> {</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> );</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...), <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> (Children&&... children)</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> {</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> _children = <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>{convert_arg(std::forward<Children>(children))...};</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...), <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> (std::shared_ptr<Children>... children)</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> {</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> _children = <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>{std::move(children)...};</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a> _children;</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> };</div>\n </div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n <div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> <span class=\"keyword\">protected</span>:</div>\n <div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span>} <span class=\"comment\">//namespace Dune</span></div>\n <div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\"> 214</a></span> <a class=\"code hl_function\" href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\">CompositeNode</a> ()</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Args, <span class=\"keyword\">typename</span> = <span class=\"keyword\">typename</span> std::enable_if<(<span class=\"keyword\">sizeof</span>...(Args) == <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a>())>::type></div>\n-<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a00b3a94562f9f0503106baf7c3f869d7\"> 219</a></span> <a class=\"code hl_class\" href=\"a01076.html\">CompositeNode</a> (Args&&... args)</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> : _children(convert_arg(std::forward<Args>(args))...)</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\"> 224</a></span> <a class=\"code hl_function\" href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\">CompositeNode</a> (std::shared_ptr<Children>... children)</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> : _children(std::move(children)...)</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\"> 229</a></span> <a class=\"code hl_function\" href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\">CompositeNode</a> (<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>& children)</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> : _children(children)</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a> _children;</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00044_html\"><div class=\"ttname\"><a href=\"a00044.html\">typetraits.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">childextraction.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00014_html\"><div class=\"ttname\"><a href=\"a00014.html\">typetraits.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01076_html\"><div class=\"ttname\"><a href=\"a01076.html\">Dune::TypeTree::CompositeNode</a></div><div class=\"ttdoc\">Base class for composite nodes based on variadic templates.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:28</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a20793f6f05dff40b6186875f6d2bb4b5\"><div class=\"ttname\"><a href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\">Dune::TypeTree::CompositeNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:42</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a2852330b2a9ad24f832bc3a1b874e0fd\"><div class=\"ttname\"><a href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:166</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a3505fd1834fa9001a8b834c343b92d06\"><div class=\"ttname\"><a href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\">Dune::TypeTree::CompositeNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:48</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a4303f12c98eb948a07556b8d78496145\"><div class=\"ttname\"><a href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:214</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a4bd6f6ef27a411f2595c1bf80f5e61d0\"><div class=\"ttname\"><a href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\">Dune::TypeTree::CompositeNode::NodeTag</a></div><div class=\"ttdeci\">CompositeNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a CompositeNode.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:33</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a4ecf99c406a8b36caff5c72dee9e0f2e\"><div class=\"ttname\"><a href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(typename Child< k >::Type &child, index_constant< k >={})</div><div class=\"ttdoc\">Sets the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a56bdcefacf70f43fceb78d3061cd7bd1\"><div class=\"ttname\"><a href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(typename Child< k >::Type &&child, index_constant< k >={})</div><div class=\"ttdoc\">Store the passed value in k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:120</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a66a12ee62cbcfb6ee613f825b1461228\"><div class=\"ttname\"><a href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">Dune::TypeTree::CompositeNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:50</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a6f3ad1b12410641048471fc7f3baa4b4\"><div class=\"ttname\"><a href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\">Dune::TypeTree::CompositeNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:132</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a79e473d935fd18eca3b562b5caade907\"><div class=\"ttname\"><a href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode(std::shared_ptr< Children >... children)</div><div class=\"ttdoc\">Initialize the CompositeNode with copies of the passed in Storage objects.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:224</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a7fcd118083e76b077502ae253868f2f2\"><div class=\"ttname\"><a href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\">Dune::TypeTree::CompositeNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< typename Child< k >::Type > childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a90fa55292e12c492942fe9ae4c49e2b3\"><div class=\"ttname\"><a href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">Dune::TypeTree::CompositeNode::ChildTypes</a></div><div class=\"ttdeci\">std::tuple< Children... > ChildTypes</div><div class=\"ttdoc\">A tuple storing the types of all children.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:39</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_a96d4d4591ee88f50d15abb1c614125c7\"><div class=\"ttname\"><a href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::shared_ptr< typename Child< k >::Type > child, index_constant< k >={})</div><div class=\"ttdoc\">Sets the storage of the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:127</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_aae633573b129d26649f8eaba6f064d16\"><div class=\"ttname\"><a href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">const ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:186</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_aaf8804e626ebc295192aad92fe6fbd9b\"><div class=\"ttname\"><a href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\">Dune::TypeTree::CompositeNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:45</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_acca4a8c3b5a26fa702419b7dca1ccae2\"><div class=\"ttname\"><a href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\">Dune::TypeTree::CompositeNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const typename Child< k >::Type > childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_ad080a3581f2c584b86adb7b958afee8a\"><div class=\"ttname\"><a href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">Child< k >::Type & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:76</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_adf98de7be2a2147694506ba60b43ea64\"><div class=\"ttname\"><a href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode(const NodeStorage &children)</div><div class=\"ttdoc\">Initialize the CompositeNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:229</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_af0ff238501bae47af3572a6c02908aba\"><div class=\"ttname\"><a href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">Dune::TypeTree::CompositeNode::NodeStorage</a></div><div class=\"ttdeci\">std::tuple< std::shared_ptr< Children >... > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:36</div></div>\n-<div class=\"ttc\" id=\"aa01076_html_af80b4b009bba741f5845b5cb4bd3e7fa\"><div class=\"ttname\"><a href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">const Child< k >::Type & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:86</div></div>\n-<div class=\"ttc\" id=\"aa01080_html\"><div class=\"ttname\"><a href=\"a01080.html\">Dune::TypeTree::CompositeNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01080_html_a3d870db35b9da8565bba729babd2ce4c\"><div class=\"ttname\"><a href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\">Dune::TypeTree::CompositeNode::Child::Type</a></div><div class=\"ttdeci\">std::tuple_element< k, ChildTypes >::type Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:62</div></div>\n-<div class=\"ttc\" id=\"aa01080_html_abb5caac9e575a950957a989f847d1b51\"><div class=\"ttname\"><a href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">Dune::TypeTree::CompositeNode::Child::type</a></div><div class=\"ttdeci\">std::tuple_element< k, ChildTypes >::type type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:65</div></div>\n-<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n-<div class=\"ttc\" id=\"aa01552_html\"><div class=\"ttname\"><a href=\"a01552.html\">Dune::TypeTree::IsTreePath</a></div><div class=\"ttdoc\">Check if type represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:184</div></div>\n+<div class=\"ttc\" id=\"aa01084_html\"><div class=\"ttname\"><a href=\"a01084.html\">Dune::TypeTree::DynamicPowerNode</a></div><div class=\"ttdoc\">Collect multiple instances of type T within a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:35</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a071ec7382a162ae89deec9bbb2c8c038\"><div class=\"ttname\"><a href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\">Dune::TypeTree::DynamicPowerNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:43</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a0dec59b6aacd090206c67d5613ed99f8\"><div class=\"ttname\"><a href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">Dune::TypeTree::DynamicPowerNode::NodeStorage</a></div><div class=\"ttdeci\">std::vector< ChildStorageType > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:67</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a0e61cc88f768238a1071da0a72e86ea4\"><div class=\"ttname\"><a href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\">Dune::TypeTree::DynamicPowerNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:137</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a165ad9425514822abdd064204c5a4acd\"><div class=\"ttname\"><a href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\">Dune::TypeTree::DynamicPowerNode::childStorage</a></div><div class=\"ttdeci\">ChildConstStorageType childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:110</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a304ef534f326f6cabde4a4c5875c2cf6\"><div class=\"ttname\"><a href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\">Dune::TypeTree::DynamicPowerNode::child</a></div><div class=\"ttdeci\">const ChildType & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:87</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a453647c9bbbd135ce3f9192a205ff0f3\"><div class=\"ttname\"><a href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">Dune::TypeTree::DynamicPowerNode::ChildStorageType</a></div><div class=\"ttdeci\">std::shared_ptr< T > ChildStorageType</div><div class=\"ttdoc\">The storage type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:61</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a4d066ccd9b100f24523d1ef0b02411b7\"><div class=\"ttname\"><a href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(T &t1, T &t2,...)</div><div class=\"ttdoc\">Initialize all children with the passed-in objects.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:174</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a4fcbd538dac494cb25d69516b098e383\"><div class=\"ttname\"><a href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">Dune::TypeTree::DynamicPowerNode::ChildConstStorageType</a></div><div class=\"ttdeci\">std::shared_ptr< const T > ChildConstStorageType</div><div class=\"ttdoc\">The const version of the storage type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:64</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a523963fb4d8bcd6e72efaa9fc895daa6\"><div class=\"ttname\"><a href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(NodeStorage children)</div><div class=\"ttdoc\">Initialize the DynamicPowerNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:167</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a52a60be3d89ce690963493105bc58b78\"><div class=\"ttname\"><a href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\">Dune::TypeTree::DynamicPowerNode::NodeTag</a></div><div class=\"ttdeci\">DynamicPowerNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes the node.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:55</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a6b08f7dded4e1a0a347506841df679c6\"><div class=\"ttname\"><a href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">Dune::TypeTree::DynamicPowerNode::ChildType</a></div><div class=\"ttdeci\">T ChildType</div><div class=\"ttdoc\">The type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:58</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a74eb4bd490c115744f64c5bc34630c34\"><div class=\"ttname\"><a href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildType &t)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:117</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a7610f9b8e0cd55abfddc968d6ed35c8b\"><div class=\"ttname\"><a href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildStorageType st)</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:131</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a92bc8b65e9546fe2c00d7166861964ab\"><div class=\"ttname\"><a href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(std::size_t size)</div><div class=\"ttdoc\">Construct a node with the given number of children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:162</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a95a5cd912bab80a57ca6ffc8fbdfb092\"><div class=\"ttname\"><a href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\">Dune::TypeTree::DynamicPowerNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:46</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a9b0c8045e492eccd67684f9b3ade4ab4\"><div class=\"ttname\"><a href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildType &&t)</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:124</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_a9b9af0f34350b5ea2e4a09b6d2e7082b\"><div class=\"ttname\"><a href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\">Dune::TypeTree::DynamicPowerNode::child</a></div><div class=\"ttdeci\">ChildType & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:77</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_ac566323ae8dfc4020be6ab256ea6de96\"><div class=\"ttname\"><a href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">Dune::TypeTree::DynamicPowerNode::degree</a></div><div class=\"ttdeci\">std::size_t degree() const</div><div class=\"ttdoc\">The number of children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_ac8c03856802092989c7a69fee45ad314\"><div class=\"ttname\"><a href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\">Dune::TypeTree::DynamicPowerNode::childStorage</a></div><div class=\"ttdeci\">ChildStorageType childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:97</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_ad8f970336459fcc261f189d5d1ed235e\"><div class=\"ttname\"><a href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\">Dune::TypeTree::DynamicPowerNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01084_html_af4d06e3f91f6b13788f4cce30472944d\"><div class=\"ttname\"><a href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode()=delete</div></div>\n+<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,323 +1,257 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-compositenode.hh\n+dynamicpowernode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_COMPOSITENODE_HH\n-7#define DUNE_TYPETREE_COMPOSITENODE_HH\n+6#ifndef DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n+7#define DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n 8\n-9#include <tuple>\n-10#include <memory>\n-11#include <type_traits>\n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+9#include <cassert>\n+10#include <vector>\n+11#include <memory>\n+12#include <type_traits>\n+13\n+14#include <dune/common/typetraits.hh>\n+15#include <dune/common/std/type_traits.hh>\n 16\n-17namespace _\bD_\bu_\bn_\be {\n-18 namespace TypeTree {\n-19\n-26 template<typename... Children>\n-_\b2_\b7 class _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-28 {\n-29\n-30 public:\n-31\n-_\b3_\b3 typedef _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n-34\n-_\b3_\b6 typedef std::tuple<std::shared_ptr<Children>... > _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-37\n-_\b3_\b9 typedef std::tuple<Children...> _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n-40\n-_\b4_\b2 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n-43\n-_\b4_\b5 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n-46\n-_\b4_\b8 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = true;\n-49\n-_\b5_\b0 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n-51 {\n-52 return std::integral_constant<std::size_t,sizeof...(Children)>{};\n-53 }\n-54\n-56 template<std::size_t k>\n-_\b5_\b7 struct _\bC_\bh_\bi_\bl_\bd {\n-58\n-59 static_assert((k < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-60\n-_\b6_\b2 typedef typename std::tuple_element<k,ChildTypes>::type _\bT_\by_\bp_\be;\n-63\n-_\b6_\b5 typedef typename std::tuple_element<k,ChildTypes>::type _\bt_\by_\bp_\be;\n-66 };\n-67\n-70\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be {\n+22 namespace TypeTree {\n+23\n+33 template<typename T>\n+_\b3_\b4 class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+35 {\n+36\n+37 public:\n+38\n+_\b4_\b0 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n+41\n+_\b4_\b3 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = true;\n+44\n+_\b4_\b6 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n+47\n+_\b4_\b9 std::size_t _\bd_\be_\bg_\br_\be_\be() const\n+50 {\n+51 return _children.size();\n+52 }\n+53\n+_\b5_\b5 typedef _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+56\n+_\b5_\b8 typedef T _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n+59\n+_\b6_\b1 typedef std::shared_ptr<T> _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be;\n+62\n+_\b6_\b4 typedef std::shared_ptr<const T> _\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be;\n+65\n+_\b6_\b7 typedef std::vector<ChildStorageType> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+68\n+69\n 72\n-75 template<std::size_t k>\n-_\b7_\b6 typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n-77 {\n-78 return *std::get<k>(_children);\n-79 }\n-80\n+74\n+_\b7_\b7 _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n+78 {\n+79 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+80 return *_children[i];\n+81 }\n 82\n-85 template<std::size_t k>\n-_\b8_\b6 const typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n-87 {\n-88 return *std::get<k>(_children);\n-89 }\n-90\n+84\n+_\b8_\b7 const _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n+88 {\n+89 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+90 return *_children[i];\n+91 }\n 92\n-95 template<std::size_t k>\n-_\b9_\b6 std::shared_ptr<typename Child<k>::Type> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> =\n-{})\n-97 {\n-98 return std::get<k>(_children);\n-99 }\n-100\n+94\n+_\b9_\b7 _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n+98 {\n+99 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+100 return _children[i];\n+101 }\n 102\n-105 template<std::size_t k>\n-_\b1_\b0_\b6 std::shared_ptr<const typename Child<k>::Type> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-(index_constant<k> = {}) const\n-107 {\n-108 return std::get<k>(_children);\n-109 }\n-110\n-112 template<std::size_t k>\n-_\b1_\b1_\b3 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd, index_constant<k> = {})\n-114 {\n-115 std::get<k>(_children) = stackobject_to_shared_ptr(_\bc_\bh_\bi_\bl_\bd);\n-116 }\n-117\n-119 template<std::size_t k>\n-_\b1_\b2_\b0 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be&& _\bc_\bh_\bi_\bl_\bd, index_constant<k> = {})\n-121 {\n-122 std::get<k>(_children) = convert_arg(std::move(_\bc_\bh_\bi_\bl_\bd));\n-123 }\n-124\n-126 template<std::size_t k>\n-_\b1_\b2_\b7 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::shared_ptr<typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be> _\bc_\bh_\bi_\bl_\bd,\n-index_constant<k> = {})\n-128 {\n-129 std::get<k>(_children) = std::move(_\bc_\bh_\bi_\bl_\bd);\n-130 }\n-131\n-_\b1_\b3_\b2 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-133 {\n-134 return _children;\n+104\n+_\b1_\b1_\b0 _\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n+111 {\n+112 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+113 return _children[i];\n+114 }\n+115\n+_\b1_\b1_\b7 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& t)\n+118 {\n+119 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+120 _children[i] = stackobject_to_shared_ptr(t);\n+121 }\n+122\n+_\b1_\b2_\b4 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be&& t)\n+125 {\n+126 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+127 _children[i] = convert_arg(std::move(t));\n+128 }\n+129\n+_\b1_\b3_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be st)\n+132 {\n+133 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n+134 _children[i] = std::move(st);\n 135 }\n 136\n-138\n+_\b1_\b3_\b7 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+138 {\n+139 return _children;\n+140 }\n 141\n-142 // The following two methods require a little bit of SFINAE trickery to\n-work correctly:\n-143 // We have to make sure that they don't shadow the methods for direct child\n-access because\n-144 // those get called by the generic child() machinery. If that machinery\n-picks up the methods\n-145 // defined below, we have an infinite recursion.\n-146 // So the methods make sure that either\n-147 //\n-148 // * there are more than one argument. In that case, we got multiple\n-indices and can forward\n-149 // to the general machine.\n-150 //\n-151 // * the first argument is not a valid flat index, i.e. either a std::\n-size_t or an index_constant.\n-152 // The argument thus has to be some kind of TreePath instance that we can\n-also pass to the\n-153 // generic machine.\n-154 //\n-155 // The above SFINAE logic works, but there is still a problem with the\n-return type deduction.\n-156 // We have to do a lazy lookup of the return type after SFINAE has\n-succeeded, otherwise the return\n-157 // type deduction will trigger the infinite recursion.\n-158\n-160\n-164#ifdef DOXYGEN\n-165 template<typename... Indices>\n-_\b1_\b6_\b6 ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n-167#else\n-168 template<typename I0, typename... I,\n-169 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n-170 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i)\n-171#endif\n-172 {\n-173 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n-174 \"You cannot use the member function child() with an empty TreePath, use the\n-freestanding version child(node,treePath) instead.\"\n-175 );\n-176 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n-177 }\n+143\n+146\n+147 protected:\n+148\n+_\b1_\b5_\b1 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be () = delete;\n+152\n+154\n+_\b1_\b6_\b2 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::size_t size)\n+163 : _children(size)\n+164 {}\n+165\n+_\b1_\b6_\b7 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be children)\n+168 : _children(std::move(children))\n+169 {}\n+170\n+171#ifdef DOXYGEN\n+172\n+_\b1_\b7_\b4 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (T& t1, T& t2, ...)\n+175 {}\n+176\n+177#else\n 178\n-180\n-184#ifdef DOXYGEN\n-185 template<typename... Indices>\n-_\b1_\b8_\b6 const ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n-187#else\n-188 template<typename I0, typename... I,\n-189 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n-190 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i) const\n-191#endif\n-192 {\n-193 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n-194 \"You cannot use the member function child() with an empty TreePath, use the\n-freestanding version child(node,treePath) instead.\"\n-195 );\n-196 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n-197 }\n-198\n+179 template<typename... Children,\n+180 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),\n+bool> = true>\n+181 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (Children&&... children)\n+182 {\n+183 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{convert_arg(std::forward<Children>(children))...};\n+184 }\n+185\n+186 template<typename... Children,\n+187 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),\n+bool> = true>\n+188 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n+189 {\n+190 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{std::move(children)...};\n+191 }\n+192\n+193#endif // DOXYGEN\n+194\n+196\n+197 private:\n+198 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n+199 };\n 200\n-201 protected:\n 202\n+203 } // namespace TypeTree\n+204} //namespace Dune\n 205\n-207\n-_\b2_\b1_\b4 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be ()\n-215 {}\n-216\n-218 template<typename... Args, typename = typename std::enable_if<(sizeof...\n-(Args) == _\bd_\be_\bg_\br_\be_\be())>::type>\n-_\b2_\b1_\b9 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (Args&&... args)\n-220 : _children(convert_arg(std::forward<Args>(args))...)\n-221 {}\n-222\n-_\b2_\b2_\b4 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n-225 : _children(std::move(children)...)\n-226 {}\n-227\n-_\b2_\b2_\b9 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& children)\n-230 : _children(children)\n-231 {}\n-232\n-234\n-235 private:\n-236 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n-237 };\n-238\n-240\n-241 } // namespace TypeTree\n-242} //namespace Dune\n-243\n-244#endif // DUNE_TYPETREE_COMPOSITENODE_HH\n+206#endif // DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n _\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-Base class for composite nodes based on variadic templates.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Mark this class as non leaf in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined & child(Indices... indices)\n-Returns the child given by the list of indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-CompositeNode()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-CompositeNodeTag NodeTag\n-The type tag that describes a CompositeNode.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(typename Child< k >::Type &child, index_constant< k >={})\n-Sets the k-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(typename Child< k >::Type &&child, index_constant< k >={})\n-Store the passed value in k-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static constexpr auto degree()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-const NodeStorage & nodeStorage() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-CompositeNode(std::shared_ptr< Children >... children)\n-Initialize the CompositeNode with copies of the passed in Storage objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< typename Child< k >::Type > childStorage(index_constant< k >=\n-{})\n-Returns the storage of the k-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n-std::tuple< Children... > ChildTypes\n-A tuple storing the types of all children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::shared_ptr< typename Child< k >::Type > child,\n-index_constant< k >={})\n-Sets the storage of the k-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const ImplementationDefined & child(Indices... indices)\n-Returns the child given by the list of indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+Collect multiple instances of type T within a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n static const bool isPower\n-Mark this class as a non power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< const typename Child< k >::Type > childStorage(index_constant<\n-k >={}) const\n-Returns the storage of the k-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-Child< k >::Type & child(index_constant< k >={})\n-Returns the k-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-CompositeNode(const NodeStorage &children)\n-Initialize the CompositeNode with a copy of the passed-in storage type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::tuple< std::shared_ptr< Children >... > NodeStorage\n+Mark this class as a power in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::vector< ChildStorageType > NodeStorage\n The type used for storing the children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const Child< k >::Type & child(index_constant< k >={}) const\n-Returns the k-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-Access to the type and storage type of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n-std::tuple_element< k, ChildTypes >::type Type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n-std::tuple_element< k, ChildTypes >::type type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a composite node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-Check if type represents a tree path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:184\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+const NodeStorage & nodeStorage() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+ChildConstStorageType childStorage(std::size_t i) const\n+Returns the storage of the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const ChildType & child(std::size_t i) const\n+Returns the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be\n+std::shared_ptr< T > ChildStorageType\n+The storage type of each child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+DynamicPowerNode(T &t1, T &t2,...)\n+Initialize all children with the passed-in objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be\n+std::shared_ptr< const T > ChildConstStorageType\n+The const version of the storage type of each child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+DynamicPowerNode(NodeStorage children)\n+Initialize the DynamicPowerNode with a copy of the passed-in storage type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+DynamicPowerNodeTag NodeTag\n+The type tag that describes the node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n+T ChildType\n+The type of each child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, ChildType &t)\n+Sets the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, ChildStorageType st)\n+Sets the stored value representing the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+DynamicPowerNode(std::size_t size)\n+Construct a node with the given number of children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a non composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, ChildType &&t)\n+Store the passed value in i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ChildType & child(std::size_t i)\n+Returns the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+std::size_t degree() const\n+The number of children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+ChildStorageType childStorage(std::size_t i)\n+Returns the storage of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Mark this class as non leaf in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n+DynamicPowerNode()=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node with runtime degree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00029.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00029.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: nodeinterface.hh File Reference</title>\n+<title>dune-typetree: fixedcapacitystack.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,60 +71,36 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#typedef-members\">Typedefs</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">nodeinterface.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">fixedcapacitystack.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <cstddef></code><br />\n-<code>#include <type_traits></code><br />\n-<code>#include <dune/common/documentation.hh></code><br />\n+<div class=\"textblock\"><code>#include <array></code><br />\n+<code>#include <cassert></code><br />\n </div>\n <p><a href=\"a00029_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01244.html\">Dune::TypeTree::NodeInterface</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Interface for nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01244.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01188.html\">Dune::TypeTree::FixedCapacityStackView< T ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01196.html\">Dune::TypeTree::FixedCapacityStack< T, capacity ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:ga69a1959f7e199cc23ff490487dc683b9\" id=\"r_ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n-<tr class=\"memitem:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a> = typename std::decay_t< Node >::NodeTag</td></tr>\n-<tr class=\"memdesc:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the node tag of the given Node. <br /></td></tr>\n-<tr class=\"separator:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gab9fecf64a233645a10b181d50e519441\" id=\"r_gab9fecf64a233645a10b181d50e519441\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n-<tr class=\"memitem:gab9fecf64a233645a10b181d50e519441\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a> = typename std::decay_t< T >::ImplementationTag</td></tr>\n-<tr class=\"memdesc:gab9fecf64a233645a10b181d50e519441\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the implementation tag of the given Node. <br /></td></tr>\n-<tr class=\"separator:gab9fecf64a233645a10b181d50e519441\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gad5f09e67114a2b620494f80cff734a02\" id=\"r_gad5f09e67114a2b620494f80cff734a02\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n-<tr class=\"memitem:gad5f09e67114a2b620494f80cff734a02\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a> = decltype(Node::degree())</td></tr>\n-<tr class=\"memdesc:gad5f09e67114a2b620494f80cff734a02\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the statically known degree of the given Node type as a std::integral_constant. <br /></td></tr>\n-<tr class=\"separator:gad5f09e67114a2b620494f80cff734a02\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:ga56ec139aa8b8af4e8fd25d3b31b970cd\" id=\"r_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n-<tr class=\"memitem:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a> (const Node &node)</td></tr>\n-<tr class=\"memdesc:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the degree of node as run time information. <br /></td></tr>\n-<tr class=\"separator:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,43 +1,23 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-nodeinterface.hh File Reference\n-#include <cstddef>\n-#include <type_traits>\n-#include <dune/common/documentation.hh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+fixedcapacitystack.hh File Reference\n+#include <array>\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 Interface for nodes in a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b<_\b _\bT_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\b<_\b _\bT_\b,_\b _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template<typename Node >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg = typename std::decay_t< Node >::NodeTag\n-\u00a0 Returns the node tag of the given Node.\n-\u00a0\n-template<typename T >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg = typename std::decay_t< T >::\n- ImplementationTag\n-\u00a0 Returns the implementation tag of the given Node.\n-\u00a0\n-template<typename Node >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be = decltype(Node::degree())\n-\u00a0 Returns the statically known degree of the given Node type as a std::\n- integral_constant.\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename Node >\n-std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be (const Node &node)\n-\u00a0 Returns the degree of node as run time information.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00029_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00029_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: nodeinterface.hh Source File</title>\n+<title>dune-typetree: fixedcapacitystack.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,100 +74,215 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">nodeinterface.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">fixedcapacitystack.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00029.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cassert></span></div>\n <div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html\"> 34</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01244.html\">NodeInterface</a></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\"> 37</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\">isLeaf</a> = implementationDefined;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\"> 40</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\">isPower</a> = implementationDefined;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\"> 43</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\">isComposite</a> = implementationDefined;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\"> 51</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\">degree</a>();</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#ad6074e269b64278112cf86caa2298133\"> 59</a></span> <span class=\"keyword\">typedef</span> ImplementationDefined <a class=\"code hl_typedef\" href=\"a01244.html#ad6074e269b64278112cf86caa2298133\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"foldopen\" id=\"foldopen00021\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html\"> 21</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a></div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">struct </span>Impl</div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> Impl(T* data, std::size_t <a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> : _data(data)</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> , _size(0)</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> , _capacity(<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> {}</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> T * <span class=\"keyword\">const</span> _data;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> std::size_t _size;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">const</span> std::size_t _capacity;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> };</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\"> 40</a></span> <a class=\"code hl_function\" href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\">FixedCapacityStackView</a>(Impl& impl)</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> : _impl(impl)</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\"> 46</a></span> std::size_t <a class=\"code hl_function\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">size</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> <span class=\"keywordflow\">return</span> _impl._size;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\"> 51</a></span> std::size_t <a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keywordflow\">return</span> _impl._capacity;</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\"> 56</a></span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keywordflow\">return</span> _impl._size == 0;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\"> 65</a></span> <span class=\"keyword\">typedef</span> ImplementationDefined <a class=\"code hl_typedef\" href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\"> 70</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a> = <span class=\"keyword\">typename</span> std::decay_t<Node>::NodeTag;</div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\"> 61</a></span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">full</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keywordflow\">return</span> _impl._size == _impl._capacity;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00066\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\"> 66</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\">push_back</a>(<span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> {</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">full</a>());</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> _impl._data[_impl._size++] = t;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\"> 74</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag</a> = <span class=\"keyword\">typename</span> std::decay_t<T>::ImplementationTag;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00079\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\"> 79</a></span> std::size_t <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(<span class=\"keyword\">const</span> Node& node)</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> {</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(&node,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Node></a>());</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n+<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\"> 72</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\">pop_back</a>()</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> --_impl._size;</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\"> 78</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">back</a>()</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> {</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> _impl._data[_impl._size-1];</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n </div>\n <div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> NodeTag></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> std::size_t <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(<span class=\"keyword\">const</span> Node* node, <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a>)</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> {</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keywordflow\">return</span> node->degree();</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> }</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\"> 107</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree</a> = <span class=\"keyword\">decltype</span>(Node::degree());</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\"> 84</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\">back</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keywordflow\">return</span> _impl._data[_impl._size-1];</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\"> 90</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">front</a>()</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keywordflow\">return</span> _impl._data[0];</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\"> 96</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\">front</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> assert(!<a class=\"code hl_function\" href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">empty</a>());</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keywordflow\">return</span> _impl._data[0];</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\"> 102</a></span> T& <a class=\"code hl_function\" href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\">operator[]</a>(std::size_t k)</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> assert(k < _impl._size);</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> _impl._data[k];</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00108\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\"> 108</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\">operator[]</a>(std::size_t k)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> assert(k < _impl._size);</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keywordflow\">return</span> _impl._data[k];</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><div class=\"ttname\"><a href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a></div><div class=\"ttdeci\">std::size_t degree(const Node &node)</div><div class=\"ttdoc\">Returns the degree of node as run time information.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:79</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_gab9fecf64a233645a10b181d50e519441\"><div class=\"ttname\"><a href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a></div><div class=\"ttdeci\">typename std::decay_t< T >::ImplementationTag ImplementationTag</div><div class=\"ttdoc\">Returns the implementation tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:74</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> Impl& _impl;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> capacity></div>\n+<div class=\"foldopen\" id=\"foldopen00121\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01196.html\"> 121</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> : <span class=\"keyword\">private</span> std::array<T,capacity></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> , <span class=\"keyword\">private</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> , <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView<T></a> <a class=\"code hl_class\" href=\"a01188.html\">view_base</a>;</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">view_base::back</a>;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">view_base::front</a>;</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">using </span><a class=\"code hl_function\" href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">view_base::size</a>;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">using </span>view_base::operator[];</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00136\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\"> 136</a></span> <a class=\"code hl_function\" href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\">FixedCapacityStack</a>()</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> : <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl(&(static_cast<std::array<T,<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>>&>(*this)[0]),<a class=\"code hl_function\" href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">capacity</a>)</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> , <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>(static_cast<typename <a class=\"code hl_class\" href=\"a01188.html\">FixedCapacityStackView</a><T>::Impl&>(*this))</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">//FixedCapacityStack(const FixedCapacityStack&);</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a>& operator=(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01196.html\">FixedCapacityStack</a>&);</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH</span></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01244_html\"><div class=\"ttname\"><a href=\"a01244.html\">Dune::TypeTree::NodeInterface</a></div><div class=\"ttdoc\">Interface for nodes in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:35</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_a2df377f2e6955a72132fdbce145c3507\"><div class=\"ttname\"><a href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\">Dune::TypeTree::NodeInterface::degree</a></div><div class=\"ttdeci\">static auto degree()</div><div class=\"ttdoc\">Number of children of this node in the dune-typetree.</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_a3ea46e12485ced909c46bafbe0c7d8df\"><div class=\"ttname\"><a href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\">Dune::TypeTree::NodeInterface::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Whether this is a power node in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:40</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_a5ec7bcac3957c41028be41f3713d44fc\"><div class=\"ttname\"><a href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\">Dune::TypeTree::NodeInterface::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Whether this is a leaf node in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:37</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_a84d7eb90e7b30648892b8278495b5d6a\"><div class=\"ttname\"><a href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\">Dune::TypeTree::NodeInterface::NodeStorage</a></div><div class=\"ttdeci\">ImplementationDefined NodeStorage</div><div class=\"ttdoc\">container type to pass around a collection of children</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:65</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_ab19c154cbeaf73ff62c21b13560419b9\"><div class=\"ttname\"><a href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\">Dune::TypeTree::NodeInterface::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Whether this is a composite node in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:43</div></div>\n-<div class=\"ttc\" id=\"aa01244_html_ad6074e269b64278112cf86caa2298133\"><div class=\"ttname\"><a href=\"a01244.html#ad6074e269b64278112cf86caa2298133\">Dune::TypeTree::NodeInterface::NodeTag</a></div><div class=\"ttdeci\">ImplementationDefined NodeTag</div><div class=\"ttdoc\">The type tag that describes what kind of node this is.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:59</div></div>\n+<div class=\"ttc\" id=\"aa01188_html\"><div class=\"ttname\"><a href=\"a01188.html\">Dune::TypeTree::FixedCapacityStackView</a></div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:22</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a00e29e07e56cf5119b3c75356f42611b\"><div class=\"ttname\"><a href=\"a01188.html#a00e29e07e56cf5119b3c75356f42611b\">Dune::TypeTree::FixedCapacityStackView::empty</a></div><div class=\"ttdeci\">bool empty() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:56</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a068d12e2860fa4edcf925f1958f883eb\"><div class=\"ttname\"><a href=\"a01188.html#a068d12e2860fa4edcf925f1958f883eb\">Dune::TypeTree::FixedCapacityStackView::full</a></div><div class=\"ttdeci\">bool full() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:61</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a1dc10f21954ae4bf7e486e00ddaf5d97\"><div class=\"ttname\"><a href=\"a01188.html#a1dc10f21954ae4bf7e486e00ddaf5d97\">Dune::TypeTree::FixedCapacityStackView::operator[]</a></div><div class=\"ttdeci\">T & operator[](std::size_t k)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:102</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a1ea6108f95394f3403fe45d8307ce803\"><div class=\"ttname\"><a href=\"a01188.html#a1ea6108f95394f3403fe45d8307ce803\">Dune::TypeTree::FixedCapacityStackView::pop_back</a></div><div class=\"ttdeci\">void pop_back()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:72</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a2296539c97f9bcb893300f68d7ec6948\"><div class=\"ttname\"><a href=\"a01188.html#a2296539c97f9bcb893300f68d7ec6948\">Dune::TypeTree::FixedCapacityStackView::back</a></div><div class=\"ttdeci\">T & back()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:78</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a5bc6ae7155dd3e9ce5537925c8cee97e\"><div class=\"ttname\"><a href=\"a01188.html#a5bc6ae7155dd3e9ce5537925c8cee97e\">Dune::TypeTree::FixedCapacityStackView::capacity</a></div><div class=\"ttdeci\">std::size_t capacity() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:51</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a702d594a7f3d8e2e19a560071bd85928\"><div class=\"ttname\"><a href=\"a01188.html#a702d594a7f3d8e2e19a560071bd85928\">Dune::TypeTree::FixedCapacityStackView::front</a></div><div class=\"ttdeci\">T & front()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:90</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_a8d191330f95f2d95bd3a7a7d9ce139e2\"><div class=\"ttname\"><a href=\"a01188.html#a8d191330f95f2d95bd3a7a7d9ce139e2\">Dune::TypeTree::FixedCapacityStackView::front</a></div><div class=\"ttdeci\">const T & front() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_ab28c7823d98231062eb41c06e577fae9\"><div class=\"ttname\"><a href=\"a01188.html#ab28c7823d98231062eb41c06e577fae9\">Dune::TypeTree::FixedCapacityStackView::operator[]</a></div><div class=\"ttdeci\">const T & operator[](std::size_t k) const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:108</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_ac27fe64b7ded989da720c9afe20a221a\"><div class=\"ttname\"><a href=\"a01188.html#ac27fe64b7ded989da720c9afe20a221a\">Dune::TypeTree::FixedCapacityStackView::push_back</a></div><div class=\"ttdeci\">void push_back(const T &t)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:66</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_ad4f096d379444a1fc79794ac92c3630d\"><div class=\"ttname\"><a href=\"a01188.html#ad4f096d379444a1fc79794ac92c3630d\">Dune::TypeTree::FixedCapacityStackView::back</a></div><div class=\"ttdeci\">const T & back() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:84</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_adb2f90552e9a7cf6c2d4eefed39aacfb\"><div class=\"ttname\"><a href=\"a01188.html#adb2f90552e9a7cf6c2d4eefed39aacfb\">Dune::TypeTree::FixedCapacityStackView::size</a></div><div class=\"ttdeci\">std::size_t size() const</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:46</div></div>\n+<div class=\"ttc\" id=\"aa01188_html_ade25e3245a230df58d4beb64e1ef1862\"><div class=\"ttname\"><a href=\"a01188.html#ade25e3245a230df58d4beb64e1ef1862\">Dune::TypeTree::FixedCapacityStackView::FixedCapacityStackView</a></div><div class=\"ttdeci\">FixedCapacityStackView(Impl &impl)</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01196_html\"><div class=\"ttname\"><a href=\"a01196.html\">Dune::TypeTree::FixedCapacityStack</a></div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:125</div></div>\n+<div class=\"ttc\" id=\"aa01196_html_a679edaa9c21f3293350bd5cb702755bf\"><div class=\"ttname\"><a href=\"a01196.html#a679edaa9c21f3293350bd5cb702755bf\">Dune::TypeTree::FixedCapacityStack::FixedCapacityStack</a></div><div class=\"ttdeci\">FixedCapacityStack()</div><div class=\"ttdef\"><b>Definition</b> fixedcapacitystack.hh:136</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,124 +1,211 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-nodeinterface.hh\n+fixedcapacitystack.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=8 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_NODEINTERFACE_HH\n-7#define DUNE_TYPETREE_NODEINTERFACE_HH\n+6#ifndef DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n+7#define DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n 8\n-9#include <cstddef>\n-10#include <type_traits>\n+9#include <array>\n+10#include <cassert>\n 11\n-12#include <dune/common/documentation.hh>\n-13\n-14namespace _\bD_\bu_\bn_\be {\n-15 namespace TypeTree {\n-16\n-_\b3_\b4 struct _\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-35 {\n-_\b3_\b7 static const bool _\bi_\bs_\bL_\be_\ba_\bf = implementationDefined;\n-38\n-_\b4_\b0 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = implementationDefined;\n-41\n-_\b4_\b3 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = implementationDefined;\n-44\n-46\n-_\b5_\b1 static auto _\bd_\be_\bg_\br_\be_\be();\n-52\n-54\n-_\b5_\b9 typedef ImplementationDefined _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+12namespace _\bD_\bu_\bn_\be {\n+13 namespace TypeTree {\n+14\n+15\n+19\n+20 template<typename T>\n+_\b2_\b1 class _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n+22 {\n+23\n+24 public:\n+25\n+26 struct Impl\n+27 {\n+28\n+29 Impl(T* data, std::size_t _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n+30 : _data(data)\n+31 , _size(0)\n+32 , _capacity(_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n+33 {}\n+34\n+35 T * const _data;\n+36 std::size_t _size;\n+37 const std::size_t _capacity;\n+38 };\n+39\n+_\b4_\b0 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw(Impl& impl)\n+41 : _impl(impl)\n+42 {}\n+43\n+44 public:\n+45\n+_\b4_\b6 std::size_t _\bs_\bi_\bz_\be() const\n+47 {\n+48 return _impl._size;\n+49 }\n+50\n+_\b5_\b1 std::size_t _\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by() const\n+52 {\n+53 return _impl._capacity;\n+54 }\n+55\n+_\b5_\b6 bool _\be_\bm_\bp_\bt_\by() const\n+57 {\n+58 return _impl._size == 0;\n+59 }\n 60\n-62\n-_\b6_\b5 typedef ImplementationDefined _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-66 };\n-67\n-69 template<typename Node>\n-_\b7_\b0 using _\bN_\bo_\bd_\be_\bT_\ba_\bg = typename std::decay_t<Node>::NodeTag;\n+_\b6_\b1 bool _\bf_\bu_\bl_\bl() const\n+62 {\n+63 return _impl._size == _impl._capacity;\n+64 }\n+65\n+_\b6_\b6 void _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(const T& t)\n+67 {\n+68 assert(!_\bf_\bu_\bl_\bl());\n+69 _impl._data[_impl._size++] = t;\n+70 }\n 71\n-73 template<typename T>\n-_\b7_\b4 using _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg = typename std::decay_t<T>::ImplementationTag;\n-75\n-76\n-78 template<typename Node>\n-_\b7_\b9 std::size_t _\bd_\be_\bg_\br_\be_\be(const Node& node)\n-80 {\n-81 return _\bd_\be_\bg_\br_\be_\be(&node,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bN_\bo_\bd_\be_\b>());\n+_\b7_\b2 void _\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk()\n+73 {\n+74 assert(!_\be_\bm_\bp_\bt_\by());\n+75 --_impl._size;\n+76 }\n+77\n+_\b7_\b8 T& _\bb_\ba_\bc_\bk()\n+79 {\n+80 assert(!_\be_\bm_\bp_\bt_\by());\n+81 return _impl._data[_impl._size-1];\n 82 }\n 83\n-84#ifndef DOXYGEN\n-85\n-87\n-93 template<typename Node, typename NodeTag>\n-94 std::size_t _\bd_\be_\bg_\br_\be_\be(const Node* node, _\bN_\bo_\bd_\be_\bT_\ba_\bg)\n-95 {\n-96 return node->degree();\n-97 }\n-98\n-99#endif // DOXYGEN\n-100\n-102\n-106 template<typename Node>\n-_\b1_\b0_\b7 using _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be = decltype(Node::degree());\n-108\n-110\n-111 } // namespace TypeTree\n-112} //namespace Dune\n+_\b8_\b4 const T& _\bb_\ba_\bc_\bk() const\n+85 {\n+86 assert(!_\be_\bm_\bp_\bt_\by());\n+87 return _impl._data[_impl._size-1];\n+88 }\n+89\n+_\b9_\b0 T& _\bf_\br_\bo_\bn_\bt()\n+91 {\n+92 assert(!_\be_\bm_\bp_\bt_\by());\n+93 return _impl._data[0];\n+94 }\n+95\n+_\b9_\b6 const T& _\bf_\br_\bo_\bn_\bt() const\n+97 {\n+98 assert(!_\be_\bm_\bp_\bt_\by());\n+99 return _impl._data[0];\n+100 }\n+101\n+_\b1_\b0_\b2 T& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t k)\n+103 {\n+104 assert(k < _impl._size);\n+105 return _impl._data[k];\n+106 }\n+107\n+_\b1_\b0_\b8 const T& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t k) const\n+109 {\n+110 assert(k < _impl._size);\n+111 return _impl._data[k];\n+112 }\n 113\n-114#endif // DUNE_TYPETREE_NODEINTERFACE_HH\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-std::size_t degree(const Node &node)\n-Returns the degree of node as run time information.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-typename std::decay_t< Node >::NodeTag NodeTag\n-Returns the node tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg\n-typename std::decay_t< T >::ImplementationTag ImplementationTag\n-Returns the implementation tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n-decltype(Node::degree()) StaticDegree\n-Returns the statically known degree of the given Node type as a std::\n-integral_constant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n+114 private:\n+115 Impl& _impl;\n+116\n+117 };\n+118\n+119\n+120 template<typename T, std::size_t capacity>\n+_\b1_\b2_\b1 class _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n+122 : private std::array<T,capacity>\n+123 , private _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl\n+124 , public _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>\n+125 {\n+126\n+127 typedef _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b<_\bT_\b> _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be;\n+128\n+129 public:\n+130\n+131 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bc_\bk;\n+132 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt;\n+133 using _\bv_\bi_\be_\bw_\b__\bb_\ba_\bs_\be_\b:_\b:_\bs_\bi_\bz_\be;\n+134 using view_base::operator[];\n+135\n+_\b1_\b3_\b6 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk()\n+137 : _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl(&(static_cast<std::array<T,_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by>&>\n+(*this)[0]),_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by)\n+138 , _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>(static_cast<typename\n+_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw<T>::Impl&>(*this))\n+139 {}\n+140\n+141 private:\n+142\n+143 //FixedCapacityStack(const FixedCapacityStack&);\n+144 _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk& operator=(const _\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk&);\n+145\n+146 };\n+147\n+149\n+150 } // namespace TypeTree\n+151} //namespace Dune\n+152\n+153#endif // DUNE_TYPETREE_FIXEDCAPACITYSTACK_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface for nodes in a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static auto degree()\n-Number of children of this node in the dune-typetree.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n-static const bool isPower\n-Whether this is a power node in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Whether this is a leaf node in a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-ImplementationDefined NodeStorage\n-container type to pass around a collection of children\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Whether this is a composite node in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-ImplementationDefined NodeTag\n-The type tag that describes what kind of node this is.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\be_\bm_\bp_\bt_\by\n+bool empty() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\bu_\bl_\bl\n+bool full() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+T & operator[](std::size_t k)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk\n+void pop_back()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bb_\ba_\bc_\bk\n+T & back()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by\n+std::size_t capacity() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\br_\bo_\bn_\bt\n+T & front()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bf_\br_\bo_\bn_\bt\n+const T & front() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const T & operator[](std::size_t k) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+void push_back(const T &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bb_\ba_\bc_\bk\n+const T & back() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\bV_\bi_\be_\bw\n+FixedCapacityStackView(Impl &impl)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bC_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bS_\bt_\ba_\bc_\bk\n+FixedCapacityStack()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn fixedcapacitystack.hh:136\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00032.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00032.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: accumulate_static.hh File Reference</title>\n+<title>dune-typetree: typetree.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -69,136 +69,32 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">accumulate_static.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">typetree.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00071_source.html\">dune/typetree/leafnode.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/powernode.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00026_source.html\">dune/typetree/dynamicpowernode.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/compositenode.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00059_source.html\">dune/typetree/traversal.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00038_source.html\">dune/typetree/pairtraversal.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/traversalutilities.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00077_source.html\">dune/typetree/transformation.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00020_source.html\">dune/typetree/transformationutilities.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n </div>\n <p><a href=\"a00032_source.html\">Go to the source code of this file.</a></p>\n-<table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00924.html\">Dune::TypeTree::or_< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using ||. <a href=\"a00924.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00928.html\">Dune::TypeTree::or_< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00932.html\">Dune::TypeTree::and_< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using &&. <a href=\"a00932.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00936.html\">Dune::TypeTree::and_< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00940.html\">Dune::TypeTree::plus< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using +. <a href=\"a00940.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00944.html\">Dune::TypeTree::plus< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00948.html\">Dune::TypeTree::minus< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using -. <a href=\"a00948.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00952.html\">Dune::TypeTree::minus< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00956.html\">Dune::TypeTree::multiply< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type using *. <a href=\"a00956.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00960.html\">Dune::TypeTree::multiply< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00964.html\">Dune::TypeTree::min< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type by returning their minimum. <a href=\"a00964.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00968.html\">Dune::TypeTree::min< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00972.html\">Dune::TypeTree::max< result_type ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically combine two values of type result_type by returning their maximum. <a href=\"a00972.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00976.html\">Dune::TypeTree::max< result_type >::reduce< r1, r2 ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01016.html\">Dune::TypeTree::AccumulateValue< Tree, Functor, Reduction, startValue, ParentChildReduction ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically accumulate a value over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01016.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01068.html\">Dune::TypeTree::TypeAccumulationPolicy< Functor, Reduction, StartType, ParentChildReduction, ReductionAlgorithm ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01072.html\">Dune::TypeTree::AccumulateType< Tree, Policy ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Statically accumulate a type over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01072.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n-Namespaces</h2></td></tr>\n-<tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00099\" id=\"r_a00099\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html\">Dune::TypeTree::Experimental</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a470e7e00fc4aa26e0bf46ea22a8cf2e2\" id=\"r_a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree , typename Visitor , typename Init > </td></tr>\n-<tr class=\"memitem:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">Dune::TypeTree::Experimental::hybridApplyToTree</a> (Tree &&tree, Visitor &&visitor, Init &&init)</td></tr>\n-<tr class=\"memdesc:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply hybrid visitor to <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n-<tr class=\"separator:a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table>\n-<h2 class=\"groupheader\">Variable Documentation</h2>\n-<a id=\"a5c902ae13e1b03f88e252f9fd9f85952\" name=\"a5c902ae13e1b03f88e252f9fd9f85952\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c902ae13e1b03f88e252f9fd9f85952\">◆ </a></span>child_result</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n-<table class=\"mlabels\">\n- <tr>\n- <td class=\"mlabels-left\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">const result_type child_result = accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,NodeTag<child>><a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a></td>\n- </tr>\n- </table>\n- </td>\n- <td class=\"mlabels-right\">\n-<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n- </tr>\n-</table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n-<a id=\"acd23380b12c1509b3b3f31b893af75c8\" name=\"acd23380b12c1509b3b3f31b893af75c8\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd23380b12c1509b3b3f31b893af75c8\">◆ </a></span>result</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n-<table class=\"mlabels\">\n- <tr>\n- <td class=\"mlabels-left\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">const result_type result = current_value</td>\n- </tr>\n- </table>\n- </td>\n- <td class=\"mlabels-right\">\n-<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n- </tr>\n-</table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,84 +1,23 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-accumulate_static.hh File Reference\n-#include <dune/common/typetraits.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+typetree.hh File Reference\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type using ||. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type using &&. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type using +. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type using -. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type using *. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type by returning their\n- minimum. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Statically combine two values of type result_type by returning their\n- maximum. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b<_\b _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b<_\b _\br_\b1_\b,_\b _\br_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bF_\bu_\bn_\bc_\bt_\bo_\br_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bs_\bt_\ba_\br_\bt_\bV_\ba_\bl_\bu_\be_\b,\n- _\bP_\ba_\br_\be_\bn_\bt_\bC_\bh_\bi_\bl_\bd_\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b _\b>\n-\u00a0 Statically accumulate a value over the nodes of a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b<_\b _\bF_\bu_\bn_\bc_\bt_\bo_\br_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bS_\bt_\ba_\br_\bt_\bT_\by_\bp_\be_\b,\n- _\bP_\ba_\br_\be_\bn_\bt_\bC_\bh_\bi_\bl_\bd_\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bR_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\bA_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bP_\bo_\bl_\bi_\bc_\by_\b _\b>\n-\u00a0 Statically accumulate a type over the nodes of a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename Tree , typename Visitor , typename Init >\n-auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (Tree &&tree, Visitor\n- &&visitor, Init &&init)\n-\u00a0 Apply hybrid visitor to _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n-\u00a0\n-*\b**\b**\b**\b**\b* V\bVa\bar\bri\bia\bab\bbl\ble\be D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bhi\bil\bld\bd_\b_r\bre\bes\bsu\bul\blt\bt *\b**\b**\b**\b**\b*\n-const result_type child_result =\n-accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,NodeTag<child>>_\b:_\b: static\n-_\br_\be_\bs_\bu_\bl_\bt\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0r\bre\bes\bsu\bul\blt\bt *\b**\b**\b**\b**\b*\n-const result_type result = current_value static\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00032_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00032_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: accumulate_static.hh Source File</title>\n+<title>dune-typetree: typetree.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,595 +74,53 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">accumulate_static.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">typetree.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00032.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00016\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00096.html\"> 16</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"foldopen\" id=\"foldopen00017\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html\"> 17</a></span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00026\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00924.html\"> 26</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00924.html\">or_</a></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00029\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00928.html\"> 29</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00928.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\"> 31</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\">result</a> = r1 || r2;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00037\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00932.html\"> 37</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00932.html\">and_</a></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00936.html\"> 40</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00936.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\">result</a> = r1 && r2;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00940.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00940.html\">plus</a></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00944.html\"> 51</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00944.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\"> 53</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\">result</a> = r1 + r2;</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00948.html\"> 59</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00948.html\">minus</a></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00952.html\"> 62</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00952.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> {</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\"> 64</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\">result</a> = r1 - r2;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00956.html\"> 70</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00956.html\">multiply</a></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> {</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00960.html\"> 73</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00960.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> {</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\"> 75</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\">result</a> = r1 * r2;</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00964.html\"> 81</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00964.html\">min</a></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00968.html\"> 84</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00968.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> {</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\"> 86</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\">result</a> = r1 < r2 ? r1 : r2;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> result_type></div>\n-<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00972.html\"> 92</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00972.html\">max</a></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n-<div class=\"foldopen\" id=\"foldopen00095\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00976.html\"> 95</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00976.html\">reduce</a></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\"> 97</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\">result</a> = r1 > r2 ? r1 : r2;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"comment\">// implementation of the traversal algorithm</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, <span class=\"keywordtype\">bool</span> doVisit></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> <span class=\"keyword\">struct </span>accumulate_node_helper</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> {</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\"> 113</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = current_value;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> };</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">struct </span>accumulate_node_helper<Node,Functor,Reduction,current_value,TreePath,true></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> {</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = Reduction::template reduce<current_value,Functor::template visit<Node,TreePath>::result>::result;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> };</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> Tag></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">struct </span>accumulate_value;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> LeafNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">struct </span>accumulate_value<LeafNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,LeafNodeTag></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> =</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> accumulate_node_helper<LeafNode,Functor,Reduction,current_value,TreePath,Functor::template doVisit<LeafNode,TreePath>::value><a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> };</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath, std::<span class=\"keywordtype\">size_t</span> i, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"keyword\">struct </span>accumulate_over_children</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> {</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(TreePath{},index_constant<i>{})) child_tree_path;</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> typedef typename Node::template <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a><i>::Type child;</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00032.html#a5c902ae13e1b03f88e252f9fd9f85952\"> 156</a></span> static const result_type child_result = accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a><child>>::result;</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> static const result_type result = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,child_result,TreePath,i+1,n>::result;</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> };</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> template<typename Node, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> struct accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,n,n></div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = current_value;</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> };</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keyword\">struct </span>accumulate_value_generic_composite_node</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> {</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type result_type;</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#a5c902ae13e1b03f88e252f9fd9f85952\">child_result</a> = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,0,StaticDegree<Node>::value><a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> =</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> accumulate_node_helper<Node,Functor,ParentChildReduction,child_result,TreePath,Functor::template doVisit<Node,TreePath>::value><a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">::result</a>;</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> </div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> };</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> </div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> <span class=\"keyword\">struct </span>accumulate_value<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,PowerNodeTag></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> : <span class=\"keyword\">public</span> accumulate_value_generic_composite_node<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> {};</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> CompositeNode, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> ParentChildReduction, <span class=\"keyword\">typename</span> Functor::result_type current_value, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">struct </span>accumulate_value<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,CompositeNodeTag></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> : <span class=\"keyword\">public</span> accumulate_value_generic_composite_node<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath></div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> {};</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> Functor::result_type startValue, <span class=\"keyword\">typename</span> ParentChildReduction = Reduction></div>\n-<div class=\"foldopen\" id=\"foldopen00261\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html\"> 261</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01016.html\">AccumulateValue</a></div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> {</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\"> 265</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::result_type <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a>;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\"> 268</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a> <a class=\"code hl_variable\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">result</a> = accumulate_value<Tree,Functor,Reduction,ParentChildReduction,startValue,HybridTreePath<>,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Tree></a>><a class=\"code hl_variable\" href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">::result</a>;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> </div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"keyword\">struct </span>flattened_reduction;</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"keyword\">struct </span>bottom_up_reduction;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> </div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> <span class=\"comment\">// implementation of the traversal algorithm</span></div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> </div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, <span class=\"keywordtype\">bool</span> doVisit></div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> <span class=\"keyword\">struct </span>accumulate_type_node_helper</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> {</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> };</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Functor, <span class=\"keyword\">typename</span> Reduction, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keyword\">struct </span>accumulate_type_node_helper<Node,Functor,Reduction,current_type,TreePath,true></div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> {</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Reduction::template reduce<</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> <span class=\"keyword\">typename</span> Functor::template visit<</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> Node,</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> TreePath</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> >::type</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> };</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> </div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> Tag></div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> <span class=\"keyword\">struct </span>accumulate_type;</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> LeafNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> <span class=\"keyword\">struct </span>accumulate_type<LeafNode,Policy,current_type,TreePath,LeafNodeTag></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> {</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_node_helper<</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> LeafNode,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> <span class=\"keyword\">typename</span> Policy::functor,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> <span class=\"keyword\">typename</span> Policy::sibling_reduction,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> TreePath,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> Policy::functor::template doVisit<</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> LeafNode,</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> TreePath>::value</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> </div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> };</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> </div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type, <span class=\"keyword\">typename</span> reduction_strategy></div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> <span class=\"keyword\">struct </span>propagate_type_down_tree;</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> </div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type></div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> <span class=\"keyword\">struct </span>propagate_type_down_tree<</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> tree_path,</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> start_type,</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> bottom_up_reduction</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> ></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> {</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> };</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> </div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> tree_path, <span class=\"keyword\">typename</span> start_type></div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> <span class=\"keyword\">struct </span>propagate_type_down_tree<</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> tree_path,</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> start_type,</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> flattened_reduction</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> ></div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> {</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::conditional<</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> TreePathBack<tree_path>::value == 0,</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> start_type,</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> current_type</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> };</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> </div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath, std::<span class=\"keywordtype\">size_t</span> i, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">struct </span>accumulate_type_over_children</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> {</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> </div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(TreePath{},index_constant<i>{})) child_tree_path;</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> </div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> typedef typename Node::template Child<i>::Type child;</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> typedef typename accumulate_type<</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> child,</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> Policy,</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> <span class=\"comment\">// apply reduction choice (flat / hierarchic)</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> typename propagate_type_down_tree<</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"> 380</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> child_tree_path,</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> typename Policy::start_type,</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> typename Policy::reduction_strategy</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> >::type,</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> child_tree_path,</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> NodeTag<child></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> >::type child_result_type;</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> </div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> typedef typename accumulate_type_over_children<</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> Node,</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> Policy,</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> child_result_type,</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> TreePath,</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> i+1,</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> n</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"> 398</span> };</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> template<typename Node, typename Policy, typename current_type, typename TreePath, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> struct accumulate_type_over_children<Node,Policy,current_type,TreePath,n,n></div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"> 403</span> {</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"> 405</span> <span class=\"keyword\">typedef</span> current_type type;</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> </div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> };</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> </div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> </div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\"> 413</span> <span class=\"keyword\">struct </span>accumulate_type_generic_composite_node</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> {</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> </div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_over_children<</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> Node,</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> Policy,</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> current_type,</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> TreePath,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> 0,</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> StaticDegree<Node>::value</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"> 423</span> >::type children_result_type;</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"> 424</span> </div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"> 425</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type_node_helper<</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> Node,</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"> 427</span> <span class=\"keyword\">typename</span> Policy::functor,</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"> 428</span> <span class=\"keyword\">typename</span> Policy::parent_child_reduction,</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> children_result_type,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> TreePath,</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"> 431</span> Policy::functor::template doVisit<</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"> 432</span> Node,</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> TreePath</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> >::value</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> >::type type;</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> </div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"> 437</span> };</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> </div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> <span class=\"keyword\">struct </span>accumulate_type<PowerNode,Policy,current_type,TreePath,PowerNodeTag></div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> : <span class=\"keyword\">public</span> accumulate_type_generic_composite_node<PowerNode,Policy,current_type,TreePath></div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> {};</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> </div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> CompositeNode, <span class=\"keyword\">typename</span> Policy, <span class=\"keyword\">typename</span> current_type, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> <span class=\"keyword\">struct </span>accumulate_type<CompositeNode,Policy,current_type,TreePath,CompositeNodeTag></div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> : <span class=\"keyword\">public</span> accumulate_type_generic_composite_node<CompositeNode,Policy,current_type,TreePath></div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> {};</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> </div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> </div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> </div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> <span class=\"keyword\">template</span><</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"keyword\">typename</span> Functor,</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> <span class=\"keyword\">typename</span> Reduction,</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"keyword\">typename</span> StartType,</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keyword\">typename</span> ParentChildReduction = Reduction,</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> <span class=\"keyword\">typename</span> ReductionAlgorithm = flattened_reduction</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> ></div>\n-<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html\"> 468</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01068.html\">TypeAccumulationPolicy</a></div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> {</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> </div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\"> 498</a></span> <span class=\"keyword\">typedef</span> Functor <a class=\"code hl_typedef\" href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\">functor</a>;</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> </div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\"> 519</a></span> <span class=\"keyword\">typedef</span> Reduction <a class=\"code hl_typedef\" href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\">sibling_reduction</a>;</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> </div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a267f825310089246c7f3cf82a464944a\"> 527</a></span> <span class=\"keyword\">typedef</span> ParentChildReduction <a class=\"code hl_typedef\" href=\"a01068.html#a267f825310089246c7f3cf82a464944a\">parent_child_reduction</a>;</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> </div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\"> 535</a></span> <span class=\"keyword\">typedef</span> StartType <a class=\"code hl_typedef\" href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\">start_type</a>;</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01068.html#a7658a27585345f9fe379367fed06349c\"> 541</a></span> <span class=\"keyword\">typedef</span> ReductionAlgorithm <a class=\"code hl_typedef\" href=\"a01068.html#a7658a27585345f9fe379367fed06349c\">reduction_strategy</a>;</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> </div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> </div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span> </div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"> 554</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Policy></div>\n-<div class=\"foldopen\" id=\"foldopen00555\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01072.html\"> 555</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01072.html\">AccumulateType</a></div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\"> 556</span> {</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\"> 557</span> </div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\"> 559</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> accumulate_type<</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"> 560</span> Tree,</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"> 561</span> Policy,</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"> 562</span> <span class=\"keyword\">typename</span> Policy::start_type,</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\"> 563</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<></a>,</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\"> 564</span> <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Tree></a></div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\"> 565</a></span> >::type <a class=\"code hl_typedef\" href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"> 566</span> </div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\"> 567</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\"> 568</span> </div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\"> 569</span> </div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"> 570</span> </div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\"> 571</span> </div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\"> 572</span> </div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"> 573</span><span class=\"comment\"> /***************************************************/</span></div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"> 574</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00575\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00099.html\"> 575</a></span> <span class=\"keyword\">namespace </span>Experimental {</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\"> 576</span> <span class=\"keyword\">namespace </span>Impl {</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> </div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\"> 579</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V, <span class=\"keyword\">class </span>U,</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"> 580</span> std::enable_if_t<std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span> <span class=\"keyword\">auto</span> hybridApplyToTree(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor, U&& current_val)</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> {</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"> 583</span> <span class=\"keywordflow\">return</span> visitor.leaf(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::forward<U>(current_val));</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\"> 584</span> }</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"> 585</span> </div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V, <span class=\"keyword\">class </span>U,</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> std::enable_if_t<not std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> <span class=\"keyword\">auto</span> hybridApplyToTree(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor, U&& current_val)</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> {</div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"> 591</span> <span class=\"keyword\">using </span>Tree = std::remove_reference_t<T>;</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"> 593</span> <span class=\"keyword\">auto</span> pre_val = visitor.pre(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::forward<U>(current_val));</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> </div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> <span class=\"comment\">// check which type of traversal is supported by the tree</span></div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<Detail::DynamicTraversalConcept,Tree>;</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<Detail::StaticTraversalConcept,Tree>;</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> </div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> </div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"> 602</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> </div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> <span class=\"comment\">// declare rule that applies visitor and current value to a child i. Returns next value</span></div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\"> 606</span> <span class=\"keyword\">auto</span> apply_i = [&](<span class=\"keyword\">auto</span>&& value, <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& i){</div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"> 607</span> <span class=\"keyword\">auto</span>&& <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> = tree.child(i);</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\"> 608</span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = std::decay_t<<span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>)>;</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\"> 609</span> </div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\"> 610</span> <span class=\"keyword\">auto</span> val_before = visitor.beforeChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i, std::move(value));</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\"> 611</span> </div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\"> 612</span> <span class=\"comment\">// visits between children</span></div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\"> 613</span> <span class=\"keyword\">auto</span> val_in = Hybrid::ifElse(</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\"> 614</span> Hybrid::equal_to(i,Indices::_0),</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\"> 615</span> [&](<span class=\"keyword\">auto</span> <span class=\"keywordtype\">id</span>){<span class=\"keywordflow\">return</span> std::move(val_before);},</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\"> 616</span> [&](<span class=\"keyword\">auto</span> id){<span class=\"keywordflow\">return</span> visitor.in(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, std::move(val_before));}</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span> );</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"> 618</span> </div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\"> 619</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree,Child,TreePath>::value;</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> <span class=\"keyword\">auto</span> val_visit = [&](){</div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"> 621</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (visitChild) {</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\"> 622</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\"> 623</span> <span class=\"keywordflow\">return</span> hybridApplyToTree(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, childTreePath, visitor, std::move(val_in));</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\"> 624</span> }</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\"> 625</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\"> 626</span> <span class=\"keywordflow\">return</span> std::move(val_in);</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> }();</div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\"> 628</span> </div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\"> 629</span> <span class=\"keywordflow\">return</span> visitor.afterChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i, std::move(val_visit));</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> };</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> </div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> <span class=\"comment\">// apply visitor to children</span></div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> <span class=\"keyword\">auto</span> in_val = [&](){</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (allowStaticTraversal::value && not preferDynamicTraversal::value) {</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> <span class=\"comment\">// get list of static indices</span></div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\"> 636</span> <span class=\"keyword\">auto</span> indices = std::make_index_sequence<Tree::degree()>{};</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\"> 637</span> </div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> <span class=\"comment\">// unfold apply_i left to right</span></div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i) {</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> <span class=\"keywordflow\">return</span> left_fold(std::move(apply_i),std::move(pre_val), i...);</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\"> 660</span> }, indices);</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\"> 661</span> </div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\"> 662</span> } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\"> 663</span> <span class=\"comment\">// unfold first child to get type</span></div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\"> 664</span> <span class=\"keyword\">auto</span> i_val = apply_i(std::move(pre_val),std::size_t{0});</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\"> 665</span> <span class=\"comment\">// dynamically loop rest of the children to accumulate remindng values</span></div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> <span class=\"keywordflow\">for</span>(std::size_t i = 1; i < tree.degree(); i++)</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> i_val = apply_i(i_val,i);</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> <span class=\"keywordflow\">return</span> i_val;</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> }</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"> 670</span> }();</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> </div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\"> 672</span> <span class=\"keywordflow\">return</span> visitor.post(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, in_val);</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\"> 673</span> }</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"> 674</span> </div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\"> 675</span> }</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\"> 676</span> </div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\"> 700</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Visitor, <span class=\"keyword\">typename</span> Init></div>\n-<div class=\"foldopen\" id=\"foldopen00701\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\"> 701</a></span> <span class=\"keyword\">auto</span> hybridApplyToTree(Tree&& tree, Visitor&& visitor, Init&& init)</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\"> 702</span> {</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\"> 703</span> <span class=\"keywordflow\">return</span> Impl::hybridApplyToTree(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor, init);</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\"> 704</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"> 705</span> </div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"> 706</span> } <span class=\"comment\">// namespace Experimental</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> </div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\"> 710</span>} <span class=\"comment\">//namespace Dune</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\"> 711</span> </div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\"> 712</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_ACCUMULATE_STATIC_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00032_html_a5c902ae13e1b03f88e252f9fd9f85952\"><div class=\"ttname\"><a href=\"a00032.html#a5c902ae13e1b03f88e252f9fd9f85952\">child_result</a></div><div class=\"ttdeci\">static const result_type child_result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:156</div></div>\n-<div class=\"ttc\" id=\"aa00032_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n-<div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00924_html\"><div class=\"ttname\"><a href=\"a00924.html\">Dune::TypeTree::or_</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using ||.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:27</div></div>\n-<div class=\"ttc\" id=\"aa00928_html\"><div class=\"ttname\"><a href=\"a00928.html\">Dune::TypeTree::or_::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:30</div></div>\n-<div class=\"ttc\" id=\"aa00928_html_aa7bdb909ef8b0ea752dddd340160c3c7\"><div class=\"ttname\"><a href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\">Dune::TypeTree::or_::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:31</div></div>\n-<div class=\"ttc\" id=\"aa00932_html\"><div class=\"ttname\"><a href=\"a00932.html\">Dune::TypeTree::and_</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using &&.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:38</div></div>\n-<div class=\"ttc\" id=\"aa00936_html\"><div class=\"ttname\"><a href=\"a00936.html\">Dune::TypeTree::and_::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:41</div></div>\n-<div class=\"ttc\" id=\"aa00936_html_afd5aa82afbde5032ac7179be2e71584c\"><div class=\"ttname\"><a href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\">Dune::TypeTree::and_::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:42</div></div>\n-<div class=\"ttc\" id=\"aa00940_html\"><div class=\"ttname\"><a href=\"a00940.html\">Dune::TypeTree::plus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using +.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa00944_html\"><div class=\"ttname\"><a href=\"a00944.html\">Dune::TypeTree::plus::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:52</div></div>\n-<div class=\"ttc\" id=\"aa00944_html_a2cb0d4f361c931ef4c0d8620b7e12c1a\"><div class=\"ttname\"><a href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\">Dune::TypeTree::plus::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:53</div></div>\n-<div class=\"ttc\" id=\"aa00948_html\"><div class=\"ttname\"><a href=\"a00948.html\">Dune::TypeTree::minus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using -.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:60</div></div>\n-<div class=\"ttc\" id=\"aa00952_html\"><div class=\"ttname\"><a href=\"a00952.html\">Dune::TypeTree::minus::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:63</div></div>\n-<div class=\"ttc\" id=\"aa00952_html_a2addd41cf0fa10cd396af23943fe4c84\"><div class=\"ttname\"><a href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\">Dune::TypeTree::minus::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:64</div></div>\n-<div class=\"ttc\" id=\"aa00956_html\"><div class=\"ttname\"><a href=\"a00956.html\">Dune::TypeTree::multiply</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using *.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:71</div></div>\n-<div class=\"ttc\" id=\"aa00960_html\"><div class=\"ttname\"><a href=\"a00960.html\">Dune::TypeTree::multiply::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:74</div></div>\n-<div class=\"ttc\" id=\"aa00960_html_a5c5780fd11bf490ab76234a9f987544a\"><div class=\"ttname\"><a href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\">Dune::TypeTree::multiply::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:75</div></div>\n-<div class=\"ttc\" id=\"aa00964_html\"><div class=\"ttname\"><a href=\"a00964.html\">Dune::TypeTree::min</a></div><div class=\"ttdoc\">Statically combine two values of type result_type by returning their minimum.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:82</div></div>\n-<div class=\"ttc\" id=\"aa00968_html\"><div class=\"ttname\"><a href=\"a00968.html\">Dune::TypeTree::min::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:85</div></div>\n-<div class=\"ttc\" id=\"aa00968_html_a0626bec9ba3e55463234f5d25b3dd20b\"><div class=\"ttname\"><a href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\">Dune::TypeTree::min::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:86</div></div>\n-<div class=\"ttc\" id=\"aa00972_html\"><div class=\"ttname\"><a href=\"a00972.html\">Dune::TypeTree::max</a></div><div class=\"ttdoc\">Statically combine two values of type result_type by returning their maximum.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:93</div></div>\n-<div class=\"ttc\" id=\"aa00976_html\"><div class=\"ttname\"><a href=\"a00976.html\">Dune::TypeTree::max::reduce</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa00976_html_a2dc2d647efdb98bbf23e8c450f753abd\"><div class=\"ttname\"><a href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\">Dune::TypeTree::max::reduce::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:97</div></div>\n-<div class=\"ttc\" id=\"aa01016_html\"><div class=\"ttname\"><a href=\"a01016.html\">Dune::TypeTree::AccumulateValue</a></div><div class=\"ttdoc\">Statically accumulate a value over the nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:262</div></div>\n-<div class=\"ttc\" id=\"aa01016_html_aaf6841863a3afd53a49b33d969449928\"><div class=\"ttname\"><a href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">Dune::TypeTree::AccumulateValue::result_type</a></div><div class=\"ttdeci\">Functor::result_type result_type</div><div class=\"ttdoc\">The result type of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:265</div></div>\n-<div class=\"ttc\" id=\"aa01016_html_ad857a652ea6f4f4ee1e1b7b367c0dbb3\"><div class=\"ttname\"><a href=\"a01016.html#ad857a652ea6f4f4ee1e1b7b367c0dbb3\">Dune::TypeTree::AccumulateValue::result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdoc\">The accumulated result of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:268</div></div>\n-<div class=\"ttc\" id=\"aa01068_html\"><div class=\"ttname\"><a href=\"a01068.html\">Dune::TypeTree::TypeAccumulationPolicy</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:469</div></div>\n-<div class=\"ttc\" id=\"aa01068_html_a267f825310089246c7f3cf82a464944a\"><div class=\"ttname\"><a href=\"a01068.html#a267f825310089246c7f3cf82a464944a\">Dune::TypeTree::TypeAccumulationPolicy::parent_child_reduction</a></div><div class=\"ttdeci\">ParentChildReduction parent_child_reduction</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:527</div></div>\n-<div class=\"ttc\" id=\"aa01068_html_a3b1a56207cb93b1ce51d6ce8d820815d\"><div class=\"ttname\"><a href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\">Dune::TypeTree::TypeAccumulationPolicy::functor</a></div><div class=\"ttdeci\">Functor functor</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:498</div></div>\n-<div class=\"ttc\" id=\"aa01068_html_a69d3cdc5a0b494eb8d9927ecd6b6bdb3\"><div class=\"ttname\"><a href=\"a01068.html#a69d3cdc5a0b494eb8d9927ecd6b6bdb3\">Dune::TypeTree::TypeAccumulationPolicy::start_type</a></div><div class=\"ttdeci\">StartType start_type</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:535</div></div>\n-<div class=\"ttc\" id=\"aa01068_html_a7658a27585345f9fe379367fed06349c\"><div class=\"ttname\"><a href=\"a01068.html#a7658a27585345f9fe379367fed06349c\">Dune::TypeTree::TypeAccumulationPolicy::reduction_strategy</a></div><div class=\"ttdeci\">ReductionAlgorithm reduction_strategy</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:541</div></div>\n-<div class=\"ttc\" id=\"aa01068_html_aae2cb32304e014e5be96fc979737f65e\"><div class=\"ttname\"><a href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\">Dune::TypeTree::TypeAccumulationPolicy::sibling_reduction</a></div><div class=\"ttdeci\">Reduction sibling_reduction</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:519</div></div>\n-<div class=\"ttc\" id=\"aa01072_html\"><div class=\"ttname\"><a href=\"a01072.html\">Dune::TypeTree::AccumulateType</a></div><div class=\"ttdoc\">Statically accumulate a type over the nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:556</div></div>\n-<div class=\"ttc\" id=\"aa01072_html_a477d6851a80a598acc517ded10b851ed\"><div class=\"ttname\"><a href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\">Dune::TypeTree::AccumulateType::type</a></div><div class=\"ttdeci\">accumulate_type< Tree, Policy, typenamePolicy::start_type, HybridTreePath<>, NodeTag< Tree > >::type type</div><div class=\"ttdoc\">The accumulated result of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:565</div></div>\n-<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00071.html\">dune/typetree/leafnode.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00011.html\">dune/typetree/powernode.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00026.html\">dune/typetree/dynamicpowernode.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00044.html\">dune/typetree/compositenode.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00059.html\">dune/typetree/traversal.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00038.html\">dune/typetree/pairtraversal.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/traversalutilities.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00077.html\">dune/typetree/transformation.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00020.html\">dune/typetree/transformationutilities.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00023.html\">dune/typetree/accumulate_static.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00008.html\">dune/typetree/childextraction.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00008_html\"><div class=\"ttname\"><a href=\"a00008.html\">childextraction.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00011_html\"><div class=\"ttname\"><a href=\"a00011.html\">powernode.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00020_html\"><div class=\"ttname\"><a href=\"a00020.html\">transformationutilities.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00023_html\"><div class=\"ttname\"><a href=\"a00023.html\">accumulate_static.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00026_html\"><div class=\"ttname\"><a href=\"a00026.html\">dynamicpowernode.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00038_html\"><div class=\"ttname\"><a href=\"a00038.html\">pairtraversal.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00044_html\"><div class=\"ttname\"><a href=\"a00044.html\">compositenode.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">traversalutilities.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00059_html\"><div class=\"ttname\"><a href=\"a00059.html\">traversal.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00071_html\"><div class=\"ttname\"><a href=\"a00071.html\">leafnode.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00077_html\"><div class=\"ttname\"><a href=\"a00077.html\">transformation.hh</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,698 +1,48 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-accumulate_static.hh\n+typetree.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n-7#define DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n+6#ifndef DUNE_TYPETREE_HH\n+7#define DUNE_TYPETREE_HH\n 8\n-9#include <dune/common/typetraits.hh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-14\n-15\n-_\b1_\b6namespace _\bD_\bu_\bn_\be {\n-_\b1_\b7 namespace TypeTree {\n-18\n-25 template<typename result_type>\n-_\b2_\b6 struct _\bo_\br_\b_\n-27 {\n-28 template<result_type r1, result_type r2>\n-_\b2_\b9 struct _\br_\be_\bd_\bu_\bc_\be\n-30 {\n-_\b3_\b1 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 || r2;\n-32 };\n-33 };\n-34\n-36 template<typename result_type>\n-_\b3_\b7 struct _\ba_\bn_\bd_\b_\n-38 {\n-39 template<result_type r1, result_type r2>\n-_\b4_\b0 struct _\br_\be_\bd_\bu_\bc_\be\n-41 {\n-_\b4_\b2 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 && r2;\n-43 };\n-44 };\n-45\n-47 template<typename result_type>\n-_\b4_\b8 struct _\bp_\bl_\bu_\bs\n-49 {\n-50 template<result_type r1, result_type r2>\n-_\b5_\b1 struct _\br_\be_\bd_\bu_\bc_\be\n-52 {\n-_\b5_\b3 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 + r2;\n-54 };\n-55 };\n-56\n-58 template<typename result_type>\n-_\b5_\b9 struct _\bm_\bi_\bn_\bu_\bs\n-60 {\n-61 template<result_type r1, result_type r2>\n-_\b6_\b2 struct _\br_\be_\bd_\bu_\bc_\be\n-63 {\n-_\b6_\b4 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 - r2;\n-65 };\n-66 };\n-67\n-69 template<typename result_type>\n-_\b7_\b0 struct _\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by\n-71 {\n-72 template<result_type r1, result_type r2>\n-_\b7_\b3 struct _\br_\be_\bd_\bu_\bc_\be\n-74 {\n-_\b7_\b5 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 * r2;\n-76 };\n-77 };\n-78\n-80 template<typename result_type>\n-_\b8_\b1 struct _\bm_\bi_\bn\n-82 {\n-83 template<result_type r1, result_type r2>\n-_\b8_\b4 struct _\br_\be_\bd_\bu_\bc_\be\n-85 {\n-_\b8_\b6 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 < r2 ? r1 : r2;\n-87 };\n-88 };\n-89\n-91 template<typename result_type>\n-_\b9_\b2 struct _\bm_\ba_\bx\n-93 {\n-94 template<result_type r1, result_type r2>\n-_\b9_\b5 struct _\br_\be_\bd_\bu_\bc_\be\n-96 {\n-_\b9_\b7 static const result_type _\br_\be_\bs_\bu_\bl_\bt = r1 > r2 ? r1 : r2;\n-98 };\n-99 };\n-100\n-101\n-102 namespace {\n-103\n-104 // implementation of the traversal algorithm\n-105\n-107 template<typename Node, typename Functor, typename Reduction, typename\n-Functor::result_type current_value, typename TreePath, bool doVisit>\n-108 struct accumulate_node_helper\n-109 {\n-110\n-111 typedef typename Functor::result_type result_type;\n-112\n-_\b1_\b1_\b3 static const result_type _\br_\be_\bs_\bu_\bl_\bt = current_value;\n-114\n-115 };\n-116\n-118 template<typename Node, typename Functor, typename Reduction, typename\n-Functor::result_type current_value, typename TreePath>\n-119 struct\n-accumulate_node_helper<Node,Functor,Reduction,current_value,TreePath,true>\n-120 {\n-121\n-122 typedef typename Functor::result_type result_type;\n-123\n-124 static const result_type _\br_\be_\bs_\bu_\bl_\bt = Reduction::template\n-reduce<current_value,Functor::template visit<Node,TreePath>::result>::result;\n-125\n-126 };\n-127\n-129 template<typename Tree, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath, typename Tag>\n-130 struct accumulate_value;\n-131\n-133 template<typename LeafNode, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath>\n-134 struct\n-accumulate_value<LeafNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,LeafNodeTag>\n-135 {\n-136\n-137 typedef typename Functor::result_type result_type;\n-138\n-139 static const result_type _\br_\be_\bs_\bu_\bl_\bt =\n-140\n-141\n-accumulate_node_helper<LeafNode,Functor,Reduction,current_value,TreePath,Functor::\n-template doVisit<LeafNode,TreePath>::value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n-142\n-143 };\n-144\n-146 template<typename Node, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath, std::size_t i, std::size_t n>\n-147 struct accumulate_over_children\n-148 {\n-149\n-150 typedef typename Functor::result_type result_type;\n-151\n-152 typedef decltype(_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(TreePath{},index_constant<i>{}))\n-child_tree_path;\n-153\n-154 typedef typename Node::template _\bC_\bh_\bi_\bl_\bd<i>::Type child;\n-155\n-_\b1_\b5_\b6 static const result_type child_result =\n-accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,_\bN_\bo_\bd_\be_\bT_\ba_\bg<child>>::\n-result;\n-157\n-158 static const result_type result =\n-accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,child_result,TreePath,i+1,n>::\n-result;\n-159\n-160 };\n-161\n-163 template<typename Node, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath, std::size_t n>\n-164 struct\n-accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,n,n>\n-165 {\n-166\n-167 typedef typename Functor::result_type result_type;\n-168\n-169 static const result_type _\br_\be_\bs_\bu_\bl_\bt = current_value;\n-170\n-171 };\n-172\n-175 template<typename Node, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath>\n-176 struct accumulate_value_generic_composite_node\n-177 {\n-178\n-179 typedef typename Functor::result_type result_type;\n-180\n-181 static const result_type _\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bs_\bu_\bl_\bt =\n-accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,0,StaticDegree<Node>::\n-value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n-182\n-183 static const result_type _\br_\be_\bs_\bu_\bl_\bt =\n-184\n-accumulate_node_helper<Node,Functor,ParentChildReduction,child_result,TreePath,Functor::\n-template doVisit<Node,TreePath>::value>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt;\n-185\n-186\n-187 };\n-188\n-190 template<typename PowerNode, typename Functor, typename Reduction, typename\n-ParentChildReduction, typename Functor::result_type current_value, typename\n-TreePath>\n-191 struct\n-accumulate_value<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,PowerNodeTag>\n-192 : public\n-accumulate_value_generic_composite_node<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>\n-193 {};\n-194\n-196 template<typename CompositeNode, typename Functor, typename Reduction,\n-typename ParentChildReduction, typename Functor::result_type current_value,\n-typename TreePath>\n-197 struct\n-accumulate_value<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,CompositeNodeTag>\n-198 : public\n-accumulate_value_generic_composite_node<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>\n-199 {};\n-200\n-201 } // anonymous namespace\n-202\n-204\n-260 template<typename Tree, typename Functor, typename Reduction, typename\n-Functor::result_type startValue, typename ParentChildReduction = Reduction>\n-_\b2_\b6_\b1 struct _\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be\n-262 {\n-263\n-_\b2_\b6_\b5 typedef typename Functor::result_type _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be;\n-266\n-_\b2_\b6_\b8 static const _\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be _\br_\be_\bs_\bu_\bl_\bt =\n-accumulate_value<Tree,Functor,Reduction,ParentChildReduction,startValue,HybridTreePath<>,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>>_\b:_\b:\n-_\br_\be_\bs_\bu_\bl_\bt;\n-269\n-270 };\n-271\n-274 struct flattened_reduction;\n-275\n-278 struct bottom_up_reduction;\n-279\n-280 namespace {\n-281\n-282 // implementation of the traversal algorithm\n-283\n-286 template<typename Node, typename Functor, typename Reduction, typename\n-current_type, typename TreePath, bool doVisit>\n-287 struct accumulate_type_node_helper\n-288 {\n-289\n-290 typedef current_type type;\n-291\n-292 };\n-293\n-295 template<typename Node, typename Functor, typename Reduction, typename\n-current_type, typename TreePath>\n-296 struct\n-accumulate_type_node_helper<Node,Functor,Reduction,current_type,TreePath,true>\n-297 {\n-298\n-299 typedef typename Reduction::template reduce<\n-300 current_type,\n-301 typename Functor::template visit<\n-302 Node,\n-303 TreePath\n-304 >::type\n-305 >::type type;\n-306\n-307 };\n-308\n-310 template<typename Tree, typename Policy, typename current_type, typename\n-TreePath, typename Tag>\n-311 struct accumulate_type;\n-312\n-314 template<typename LeafNode, typename Policy, typename current_type,\n-typename TreePath>\n-315 struct accumulate_type<LeafNode,Policy,current_type,TreePath,LeafNodeTag>\n-316 {\n-317\n-318 typedef typename accumulate_type_node_helper<\n-319 LeafNode,\n-320 typename Policy::functor,\n-321 typename Policy::sibling_reduction,\n-322 current_type,\n-323 TreePath,\n-324 Policy::functor::template doVisit<\n-325 LeafNode,\n-326 TreePath>::value\n-327 >::type type;\n-328\n-329 };\n-330\n-331\n-334 template<typename current_type, typename tree_path, typename start_type,\n-typename reduction_strategy>\n-335 struct propagate_type_down_tree;\n-336\n-338 template<typename current_type, typename tree_path, typename start_type>\n-339 struct propagate_type_down_tree<\n-340 current_type,\n-341 tree_path,\n-342 start_type,\n-343 bottom_up_reduction\n-344 >\n-345 {\n-346 typedef current_type type;\n-347 };\n-348\n-350 template<typename current_type, typename tree_path, typename start_type>\n-351 struct propagate_type_down_tree<\n-352 current_type,\n-353 tree_path,\n-354 start_type,\n-355 flattened_reduction\n-356 >\n-357 {\n-358 typedef typename std::conditional<\n-359 TreePathBack<tree_path>::value == 0,\n-360 start_type,\n-361 current_type\n-362 >::type type;\n-363 };\n-364\n-365\n-367 template<typename Node, typename Policy, typename current_type, typename\n-TreePath, std::size_t i, std::size_t n>\n-368 struct accumulate_type_over_children\n-369 {\n-370\n-371 typedef decltype(_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(TreePath{},index_constant<i>{}))\n-child_tree_path;\n-372\n-373 typedef typename Node::template Child<i>::Type child;\n-374\n-375 typedef typename accumulate_type<\n-376 child,\n-377 Policy,\n-378 // apply reduction choice (flat / hierarchic)\n-379 typename propagate_type_down_tree<\n-380 current_type,\n-381 child_tree_path,\n-382 typename Policy::start_type,\n-383 typename Policy::reduction_strategy\n-384 >::type,\n-385 child_tree_path,\n-386 NodeTag<child>\n-387 >::type child_result_type;\n-388\n-389 typedef typename accumulate_type_over_children<\n-390 Node,\n-391 Policy,\n-392 child_result_type,\n-393 TreePath,\n-394 i+1,\n-395 n\n-396 >::type type;\n-397\n-398 };\n-399\n-401 template<typename Node, typename Policy, typename current_type, typename\n-TreePath, std::size_t n>\n-402 struct accumulate_type_over_children<Node,Policy,current_type,TreePath,n,n>\n-403 {\n-404\n-405 typedef current_type type;\n-406\n-407 };\n-408\n-409\n-412 template<typename Node, typename Policy, typename current_type, typename\n-TreePath>\n-413 struct accumulate_type_generic_composite_node\n-414 {\n-415\n-416 typedef typename accumulate_type_over_children<\n-417 Node,\n-418 Policy,\n-419 current_type,\n-420 TreePath,\n-421 0,\n-422 StaticDegree<Node>::value\n-423 >::type children_result_type;\n-424\n-425 typedef typename accumulate_type_node_helper<\n-426 Node,\n-427 typename Policy::functor,\n-428 typename Policy::parent_child_reduction,\n-429 children_result_type,\n-430 TreePath,\n-431 Policy::functor::template doVisit<\n-432 Node,\n-433 TreePath\n-434 >::value\n-435 >::type type;\n-436\n-437 };\n-438\n-440 template<typename PowerNode, typename Policy, typename current_type,\n-typename TreePath>\n-441 struct accumulate_type<PowerNode,Policy,current_type,TreePath,PowerNodeTag>\n-442 : public\n-accumulate_type_generic_composite_node<PowerNode,Policy,current_type,TreePath>\n-443 {};\n-444\n-446 template<typename CompositeNode, typename Policy, typename current_type,\n-typename TreePath>\n-447 struct\n-accumulate_type<CompositeNode,Policy,current_type,TreePath,CompositeNodeTag>\n-448 : public\n-accumulate_type_generic_composite_node<CompositeNode,Policy,current_type,TreePath>\n-449 {};\n-450\n-451 } // anonymous namespace\n-452\n-453\n-461 template<\n-462 typename Functor,\n-463 typename Reduction,\n-464 typename StartType,\n-465 typename ParentChildReduction = Reduction,\n-466 typename ReductionAlgorithm = flattened_reduction\n-467 >\n-_\b4_\b6_\b8 struct _\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by\n-469 {\n-470\n-_\b4_\b9_\b8 typedef Functor _\bf_\bu_\bn_\bc_\bt_\bo_\br;\n-499\n-_\b5_\b1_\b9 typedef Reduction _\bs_\bi_\bb_\bl_\bi_\bn_\bg_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n-520\n-_\b5_\b2_\b7 typedef ParentChildReduction _\bp_\ba_\br_\be_\bn_\bt_\b__\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n-528\n-_\b5_\b3_\b5 typedef StartType _\bs_\bt_\ba_\br_\bt_\b__\bt_\by_\bp_\be;\n-536\n-_\b5_\b4_\b1 typedef ReductionAlgorithm _\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\ba_\bt_\be_\bg_\by;\n-542 };\n-543\n-544\n-546\n-554 template<typename Tree, typename Policy>\n-_\b5_\b5_\b5 struct _\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be\n-556 {\n-557\n-559 typedef typename accumulate_type<\n-560 Tree,\n-561 Policy,\n-562 typename Policy::start_type,\n-563 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b>,\n-564 _\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>\n-_\b5_\b6_\b5 >::type _\bt_\by_\bp_\be;\n-566\n-567 };\n-568\n-569\n-570\n-571\n-572\n-573 /***************************************************/\n-574\n-_\b5_\b7_\b5 namespace Experimental {\n-576 namespace Impl {\n-577\n-579 template<class T, class TreePath, class V, class U,\n-580 std::enable_if_t<std::decay_t<T>::isLeaf, int> = 0>\n-581 auto hybridApplyToTree(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor, U&&\n-current_val)\n-582 {\n-583 return visitor.leaf(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::forward<U>(current_val));\n-584 }\n-585\n-587 template<class T, class TreePath, class V, class U,\n-588 std::enable_if_t<not std::decay_t<T>::isLeaf, int> = 0>\n-589 auto hybridApplyToTree(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor, U&&\n-current_val)\n-590 {\n-591 using Tree = std::remove_reference_t<T>;\n-592 using Visitor = std::remove_reference_t<V>;\n-593 auto pre_val = visitor.pre(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::forward<U>(current_val));\n-594\n-595 // check which type of traversal is supported by the tree\n-596 using allowDynamicTraversal = Dune::Std::is_detected<Detail::\n-DynamicTraversalConcept,Tree>;\n-597 using allowStaticTraversal = Dune::Std::is_detected<Detail::\n-StaticTraversalConcept,Tree>;\n-598\n-599 // the tree must support either dynamic or static traversal\n-600 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n-601\n-602 // the visitor may specify preferred dynamic traversal\n-603 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n-TreePathType::dynamic>;\n-604\n-605 // declare rule that applies visitor and current value to a child i.\n-Returns next value\n-606 auto apply_i = [&](auto&& value, const auto& i){\n-607 auto&& _\bc_\bh_\bi_\bl_\bd = tree.child(i);\n-608 using _\bC_\bh_\bi_\bl_\bd = std::decay_t<decltype(_\bc_\bh_\bi_\bl_\bd)>;\n-609\n-610 auto val_before = visitor.beforeChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i, std::move\n-(value));\n-611\n-612 // visits between children\n-613 auto val_in = Hybrid::ifElse(\n-614 Hybrid::equal_to(i,Indices::_0),\n-615 [&](auto id){return std::move(val_before);},\n-616 [&](auto id){return visitor.in(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, std::move(val_before));}\n-617 );\n-618\n-619 constexpr bool visitChild = Visitor::template\n-VisitChild<Tree,Child,TreePath>::value;\n-620 auto val_visit = [&](){\n-621 if constexpr (visitChild) {\n-622 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-623 return hybridApplyToTree(_\bc_\bh_\bi_\bl_\bd, childTreePath, visitor, std::move(val_in));\n-624 }\n-625 else\n-626 return std::move(val_in);\n-627 }();\n-628\n-629 return visitor.afterChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i, std::move(val_visit));\n-630 };\n-631\n-632 // apply visitor to children\n-633 auto in_val = [&](){\n-634 if constexpr (allowStaticTraversal::value && not preferDynamicTraversal::\n-value) {\n-635 // get list of static indices\n-636 auto indices = std::make_index_sequence<Tree::degree()>{};\n-637\n-638 // unfold apply_i left to right\n-639 return unpackIntegerSequence([&](auto... i) {\n-659 return left_fold(std::move(apply_i),std::move(pre_val), i...);\n-660 }, indices);\n-661\n-662 } else {\n-663 // unfold first child to get type\n-664 auto i_val = apply_i(std::move(pre_val),std::size_t{0});\n-665 // dynamically loop rest of the children to accumulate remindng values\n-666 for(std::size_t i = 1; i < tree.degree(); i++)\n-667 i_val = apply_i(i_val,i);\n-668 return i_val;\n-669 }\n-670 }();\n-671\n-672 return visitor.post(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, in_val);\n-673 }\n-674\n-675 }\n-676\n-700 template<typename Tree, typename Visitor, typename Init>\n-_\b7_\b0_\b1 auto hybridApplyToTree(Tree&& tree, Visitor&& visitor, Init&& init)\n-702 {\n-703 return Impl::hybridApplyToTree(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor, init);\n-704 }\n-705\n-706 } // namespace Experimental\n-707\n-709 } // namespace TypeTree\n-710} //namespace Dune\n-711\n-712#endif // DUNE_TYPETREE_ACCUMULATE_STATIC_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bs_\bu_\bl_\bt\n-static const result_type child_result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:156\n-_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+22\n+23#endif // DUNE_TYPETREE_HH\n+_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh\n+_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh\n+_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh\n _\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n+_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n+_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-typename impl::_Child< Node, indices... >::type Child\n-Template alias for the type of a child node given by a list of child indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-typename std::decay_t< Node >::NodeTag NodeTag\n-Returns the node tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n-T... > &tp, std::size_t i)\n-Appends a run time index to a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto hybridTreePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b_\n-Statically combine two values of type result_type using ||.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\br_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b_\n-Statically combine two values of type result_type using &&.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bn_\bd_\b__\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs\n-Statically combine two values of type result_type using +.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs\n-Statically combine two values of type result_type using -.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\bu_\bs_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by\n-Statically combine two values of type result_type using *.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bu_\bl_\bt_\bi_\bp_\bl_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn\n-Statically combine two values of type result_type by returning their minimum.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\bi_\bn_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx\n-Statically combine two values of type result_type by returning their maximum.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b:_\b:_\br_\be_\bd_\bu_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bx_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be\n-Statically accumulate a value over the nodes of a TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:262\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b__\bt_\by_\bp_\be\n-Functor::result_type result_type\n-The result type of the computation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:265\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-The accumulated result of the computation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:469\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bp_\ba_\br_\be_\bn_\bt_\b__\bc_\bh_\bi_\bl_\bd_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n-ParentChildReduction parent_child_reduction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:527\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bf_\bu_\bn_\bc_\bt_\bo_\br\n-Functor functor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bs_\bt_\ba_\br_\bt_\b__\bt_\by_\bp_\be\n-StartType start_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:535\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\ba_\bt_\be_\bg_\by\n-ReductionAlgorithm reduction_strategy\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:541\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn_\bP_\bo_\bl_\bi_\bc_\by_\b:_\b:_\bs_\bi_\bb_\bl_\bi_\bn_\bg_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n-Reduction sibling_reduction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:519\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be\n-Statically accumulate a type over the nodes of a TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:556\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\bT_\by_\bp_\be_\b:_\b:_\bt_\by_\bp_\be\n-accumulate_type< Tree, Policy, typenamePolicy::start_type, HybridTreePath<>,\n-NodeTag< Tree > >::type type\n-The accumulated result of the computation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:565\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-A hybrid version of TreePath that supports both compile time and run time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n+_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n+_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh\n+_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00035.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00035.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: simpletransformationdescriptors.hh File Reference</title>\n+<title>dune-typetree: utility.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,40 +72,33 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">simpletransformationdescriptors.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">utility.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <array></code><br />\n-<code>#include <memory></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <dune/common/exceptions.hh></code><br />\n+<div class=\"textblock\"><code>#include <memory></code><br />\n+<code>#include <tuple></code><br />\n+<code>#include <type_traits></code><br />\n+<code>#include <utility></code><br />\n+<code>#include <algorithm></code><br />\n+<code>#include <dune/common/shared_ptr.hh></code><br />\n+<code>#include <dune/common/indices.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n </div>\n <p><a href=\"a00035_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01336.html\">Dune::TypeTree::SimpleLeafNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01340.html\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01344.html\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01348.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01352.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01356.html\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01360.html\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01556.html\">Dune::TypeTree::TreeInfo< Tree, Tag ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Struct for obtaining some basic structural information about a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01556.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,42 +1,29 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simpletransformationdescriptors.hh File Reference\n-#include <array>\n+utility.hh File Reference\n #include <memory>\n+#include <tuple>\n+#include <type_traits>\n+#include <utility>\n+#include <algorithm>\n+#include <dune/common/shared_ptr.hh>\n+#include <dune/common/indices.hh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <dune/common/exceptions.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bT_\ba_\bg_\b _\b>\n+\u00a0 Struct for obtaining some basic structural information about a\n+ _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00035_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00035_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: simpletransformationdescriptors.hh Source File</title>\n+<title>dune-typetree: utility.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,209 +74,236 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">simpletransformationdescriptors.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">utility.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00035.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_UTILITY_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_UTILITY_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <utility></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <algorithm></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00026\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html\"> 26</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01336.html\">SimpleLeafNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\"> 29</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\">recursive</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\"> 31</a></span> <span class=\"keyword\">typedef</span> TransformedNode <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a>;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\"> 32</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<transformed_type> <a class=\"code hl_typedef\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">transformed_storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\"> 34</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a> <a class=\"code hl_function\" href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a>();</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\"> 39</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">transformed_storage_type</a> <a class=\"code hl_function\" href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keywordflow\">return</span> std::make_shared<transformed_type>();</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child, std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01340.html\">SimplePowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\"> 51</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html\"> 54</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01344.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\"> 56</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC, StaticDegree<SourceNode>::value> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\"> 57</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\"> 58</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\">degree</a> = <a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree<type>::value</a>;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\"> 62</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01344.html\">result<TC>::degree</a>>& children)</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> {</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">result<TC>::type</a>(children);</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#a2a2164a962159c12235be4d29d762697\"> 68</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01340.html#a2a2164a962159c12235be4d29d762697\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01344.html\">result<TC>::degree</a>>& children)</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> {</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(children);</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> };</div>\n-</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> std::shared_ptr<T> convert_arg(<span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keywordflow\">return</span> std::make_shared<T>(t);</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> }</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> std::shared_ptr<T> convert_arg(T& t)</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keywordflow\">return</span> stackobject_to_shared_ptr(t);</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> }</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> BaseType, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> T& assertGridViewType(T& t)</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">static_assert</span>((std::is_same<<span class=\"keyword\">typename</span> BaseType::Traits::GridViewType,</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">typename</span> T::Traits::GridViewType>::value),</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"stringliteral\">"GridViewType must be equal in all components of composite type"</span>);</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> t;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> }</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// only bind to real rvalues</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">typename</span> std::enable_if<!std::is_lvalue_reference<T>::value,std::shared_ptr<T> >::type convert_arg(T&& t)</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keywordflow\">return</span> std::make_shared<T>(std::forward<T>(t));</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> }</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">namespace </span>Experimental {</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> BinaryOp, <span class=\"keyword\">class</span> Arg></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>)</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> left_fold(<span class=\"keyword\">const</span> BinaryOp& binary_op, Arg&& arg)</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> {</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keywordflow\">return</span> std::forward<Arg>(arg);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> }</div>\n <div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html\"> 77</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01348.html\">SimpleDynamicPowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> {</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#a72208d963624267d83cafb2522d6a120\"> 80</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01348.html#a72208d963624267d83cafb2522d6a120\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html\"> 83</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01352.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> {</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\"> 85</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\"> 86</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\"> 90</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">result<TC>::type</a>(children);</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#afea54f6ad39e912794668f7422e27934\"> 96</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01348.html#afea54f6ad39e912794668f7422e27934\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> {</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(children);</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html\"> 105</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01356.html\">SimpleCompositeNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> {</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>BinaryOp, <span class=\"keyword\">class </span>Init, <span class=\"keyword\">class </span>Arg0, <span class=\"keyword\">class</span>... Args></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>)</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> left_fold(<span class=\"keyword\">const</span> BinaryOp& binary_op, Init&& init, Arg0&& arg_0, Args&&... args)</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> {</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keywordflow\">return</span> left_fold(</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> binary_op,</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> binary_op(std::forward<Init>(init), std::forward<Arg0>(arg_0)),</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> std::forward<Args>(args)...);</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> }</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> } <span class=\"comment\">// namespace Experimental</span></div>\n <div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\"> 108</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00111\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html\"> 111</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01360.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> {</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\"> 113</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC...> <a class=\"code hl_typedef\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\"> 114</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\"> 118</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">result<TC...>::type</a>(children...);</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Tag = StartTag></div>\n+<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html\"> 120</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo</a></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> {</div>\n <div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\"> 124</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::storage_type <a class=\"code hl_function\" href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keywordflow\">return</span> std::make_shared<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::type>(children...);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"comment\">// Start the tree traversal</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo<Tree,NodeTag<Tree></a>> <a class=\"code hl_struct\" href=\"a01556.html\">NodeInfo</a>;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">public</span>:</div>\n <div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\"> 130</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">NodeInfo::depth</a>;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\"> 133</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">NodeInfo::nodeCount</a>;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\"> 136</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">NodeInfo::leafCount</a>;</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"comment\">// TreeInfo specializations for the different node types</span></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"comment\">// leaf node</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo</a><Node,<a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a>></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = 1;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = 1;</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = 1;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> };</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// power node - exploit the fact that all children are identical</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keyword\">struct </span>TreeInfo<Node,PowerNodeTag></div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">typedef</span> TreeInfo<typename Node::ChildType,NodeTag<typename Node::ChildType>> ChildInfo;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = 1 + ChildInfo::depth;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = 1 + StaticDegree<Node>::value * ChildInfo::nodeCount;</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = StaticDegree<Node>::value * ChildInfo::leafCount;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> };</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// TMP for iterating over the children of a composite node</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"comment\">// identical for both composite node implementations</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::<span class=\"keywordtype\">size_t</span> k, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">struct </span>generic_compositenode_children_info</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> {</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">typedef</span> generic_compositenode_children_info<Node,k+1,n> NextChild;</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"comment\">// extract child info</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::template Child<k>::Type Child;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">typedef</span> NodeTag<Child> ChildTag;</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> <span class=\"keyword\">typedef</span> TreeInfo<Child,ChildTag> ChildInfo;</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"comment\">// combine information of current child with info about following children</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t maxDepth = ChildInfo::depth > NextChild::maxDepth ? ChildInfo::depth : NextChild::maxDepth;</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t nodeCount = ChildInfo::nodeCount + NextChild::nodeCount;</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> </div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t leafCount = ChildInfo::leafCount + NextChild::leafCount;</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> };</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> <span class=\"comment\">// End of recursion</span></div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::<span class=\"keywordtype\">size_t</span> n></div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">struct </span>generic_compositenode_children_info<Node,n,n></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t maxDepth = 0;</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a> = 0;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a> = 0;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> };</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> </div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"comment\">// Struct for building information about composite node</span></div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keyword\">struct </span>GenericCompositeNodeInfo</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> {</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> <span class=\"keyword\">typedef</span> generic_compositenode_children_info<Node,0,StaticDegree<Node>::value> Children;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">depth</a> = 1 + Children::maxDepth;</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a> = 1 + Children::nodeCount;</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a> = Children::leafCount;</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> };</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> <span class=\"comment\">// CompositeNode: delegate to GenericCompositeNodeInfo</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keyword\">struct </span>TreeInfo<Node,CompositeNodeTag></div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> : <span class=\"keyword\">public</span> GenericCompositeNodeInfo<Node></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> {};</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keyword\">using </span>Dune::index_constant;</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> <span class=\"keyword\">namespace </span>Indices = Dune::Indices;</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> </div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> </div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_UTILITY_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01336_html\"><div class=\"ttname\"><a href=\"a01336.html\">Dune::TypeTree::SimpleLeafNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:27</div></div>\n-<div class=\"ttc\" id=\"aa01336_html_a04e6ff6c636a3b36f242ca34e682dd13\"><div class=\"ttname\"><a href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\">Dune::TypeTree::SimpleLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceNode &s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:34</div></div>\n-<div class=\"ttc\" id=\"aa01336_html_a14d22b0d2536ece00f4fc7fc57fb05d9\"><div class=\"ttname\"><a href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\">Dune::TypeTree::SimpleLeafNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:29</div></div>\n-<div class=\"ttc\" id=\"aa01336_html_a762f8cd1661843ca5b67d9d6c26ab790\"><div class=\"ttname\"><a href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">Dune::TypeTree::SimpleLeafNodeTransformation::transformed_storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< transformed_type > transformed_storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:32</div></div>\n-<div class=\"ttc\" id=\"aa01336_html_a9b8409f72b3759f5eb1fe50a105e3241\"><div class=\"ttname\"><a href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\">Dune::TypeTree::SimpleLeafNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:39</div></div>\n-<div class=\"ttc\" id=\"aa01336_html_afa37c301eb96854dbe3b8ff418771200\"><div class=\"ttname\"><a href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">Dune::TypeTree::SimpleLeafNodeTransformation::transformed_type</a></div><div class=\"ttdeci\">TransformedNode transformed_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:31</div></div>\n-<div class=\"ttc\" id=\"aa01340_html\"><div class=\"ttname\"><a href=\"a01340.html\">Dune::TypeTree::SimplePowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa01340_html_a2a2164a962159c12235be4d29d762697\"><div class=\"ttname\"><a href=\"a01340.html#a2a2164a962159c12235be4d29d762697\">Dune::TypeTree::SimplePowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:68</div></div>\n-<div class=\"ttc\" id=\"aa01340_html_a5e74b42b008e5311f4060489ac228ed8\"><div class=\"ttname\"><a href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\">Dune::TypeTree::SimplePowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:51</div></div>\n-<div class=\"ttc\" id=\"aa01340_html_ae10930cd8b9b2264ca18cf63d42e85de\"><div class=\"ttname\"><a href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\">Dune::TypeTree::SimplePowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:62</div></div>\n-<div class=\"ttc\" id=\"aa01344_html\"><div class=\"ttname\"><a href=\"a01344.html\">Dune::TypeTree::SimplePowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:55</div></div>\n-<div class=\"ttc\" id=\"aa01344_html_a1de73f0bdcf33ec83d31c03075c0d499\"><div class=\"ttname\"><a href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">Dune::TypeTree::SimplePowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC, StaticDegree< SourceNode >::value > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:56</div></div>\n-<div class=\"ttc\" id=\"aa01344_html_a411f7b80f8465a7b7434858dd33d2fd7\"><div class=\"ttname\"><a href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\">Dune::TypeTree::SimplePowerNodeTransformation::result::degree</a></div><div class=\"ttdeci\">static const std::size_t degree</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:58</div></div>\n-<div class=\"ttc\" id=\"aa01344_html_ab028ec256a6d198194c815b362ab2801\"><div class=\"ttname\"><a href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">Dune::TypeTree::SimplePowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01348_html\"><div class=\"ttname\"><a href=\"a01348.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:78</div></div>\n-<div class=\"ttc\" id=\"aa01348_html_a72208d963624267d83cafb2522d6a120\"><div class=\"ttname\"><a href=\"a01348.html#a72208d963624267d83cafb2522d6a120\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:80</div></div>\n-<div class=\"ttc\" id=\"aa01348_html_ae3bd647d2350d9529d8f9e1cd8b79920\"><div class=\"ttname\"><a href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:90</div></div>\n-<div class=\"ttc\" id=\"aa01348_html_afea54f6ad39e912794668f7422e27934\"><div class=\"ttname\"><a href=\"a01348.html#afea54f6ad39e912794668f7422e27934\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa01352_html\"><div class=\"ttname\"><a href=\"a01352.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:84</div></div>\n-<div class=\"ttc\" id=\"aa01352_html_aa95f83212975c2470f0361b94890c671\"><div class=\"ttname\"><a href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:85</div></div>\n-<div class=\"ttc\" id=\"aa01352_html_afd8a1d62b3d68c6118db28267aaed0c4\"><div class=\"ttname\"><a href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:86</div></div>\n-<div class=\"ttc\" id=\"aa01356_html\"><div class=\"ttname\"><a href=\"a01356.html\">Dune::TypeTree::SimpleCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa01356_html_a47c41ee210422fdb7b0b9c0e69c207aa\"><div class=\"ttname\"><a href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\">Dune::TypeTree::SimpleCompositeNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:108</div></div>\n-<div class=\"ttc\" id=\"aa01356_html_a78ea284f1b9bc47321dff5779ed6907d\"><div class=\"ttname\"><a href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\">Dune::TypeTree::SimpleCompositeNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:124</div></div>\n-<div class=\"ttc\" id=\"aa01356_html_af79253ffe5856d005187e7065649c1f0\"><div class=\"ttname\"><a href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\">Dune::TypeTree::SimpleCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:118</div></div>\n-<div class=\"ttc\" id=\"aa01360_html\"><div class=\"ttname\"><a href=\"a01360.html\">Dune::TypeTree::SimpleCompositeNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:112</div></div>\n-<div class=\"ttc\" id=\"aa01360_html_a10f5ad6862df441221281b52160ed3b0\"><div class=\"ttname\"><a href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\">Dune::TypeTree::SimpleCompositeNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:114</div></div>\n-<div class=\"ttc\" id=\"aa01360_html_a2e90f99cd656f209ce6044215c74bddd\"><div class=\"ttname\"><a href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">Dune::TypeTree::SimpleCompositeNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC... > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a53a6ba5f914d4da3ba5ff80408f21163\"><div class=\"ttname\"><a href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a></div><div class=\"ttdeci\">auto leafCount(const Tree &tree)</div><div class=\"ttdoc\">The number of leaf nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:532</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a5785c6c18fde92f5bff32c3096f8a00d\"><div class=\"ttname\"><a href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a></div><div class=\"ttdeci\">auto nodeCount(const Tree &tree)</div><div class=\"ttdoc\">The total number of nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:524</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a7ab47599182e64eb1cfc8d73ccf87c3c\"><div class=\"ttname\"><a href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">Dune::TypeTree::Experimental::Info::depth</a></div><div class=\"ttdeci\">auto depth(const Tree &tree)</div><div class=\"ttdoc\">The depth of the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:508</div></div>\n+<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n+<div class=\"ttc\" id=\"aa01556_html\"><div class=\"ttname\"><a href=\"a01556.html\">Dune::TypeTree::TreeInfo</a></div><div class=\"ttdoc\">Struct for obtaining some basic structural information about a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:121</div></div>\n+<div class=\"ttc\" id=\"aa01556_html_a11e15acb63ccfb67ca7093ff153013ec\"><div class=\"ttname\"><a href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">Dune::TypeTree::TreeInfo::leafCount</a></div><div class=\"ttdeci\">static const std::size_t leafCount</div><div class=\"ttdoc\">The number of leaf nodes in the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:136</div></div>\n+<div class=\"ttc\" id=\"aa01556_html_a57865e1039b7173227a68ace3595af99\"><div class=\"ttname\"><a href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">Dune::TypeTree::TreeInfo::depth</a></div><div class=\"ttdeci\">static const std::size_t depth</div><div class=\"ttdoc\">The depth of the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:130</div></div>\n+<div class=\"ttc\" id=\"aa01556_html_af40f1e154afb15491116809ef2245b4c\"><div class=\"ttname\"><a href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">Dune::TypeTree::TreeInfo::nodeCount</a></div><div class=\"ttdeci\">static const std::size_t nodeCount</div><div class=\"ttdoc\">The total number of nodes in the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:133</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,253 +1,265 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-simpletransformationdescriptors.hh\n+utility.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n-7#define DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n+6#ifndef DUNE_TYPETREE_UTILITY_HH\n+7#define DUNE_TYPETREE_UTILITY_HH\n 8\n-9#include <array>\n-10#include <memory>\n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-14#include <dune/common/exceptions.hh>\n-15\n-16\n-17namespace _\bD_\bu_\bn_\be {\n-18 namespace TypeTree {\n+9#include <memory>\n+10#include <tuple>\n+11#include <type_traits>\n+12#include <utility>\n+13#include <algorithm>\n+14\n+15#include <dune/common/shared_ptr.hh>\n+16#include <dune/common/indices.hh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n 19\n-25 template<typename SourceNode, typename Transformation, typename\n-TransformedNode>\n-_\b2_\b6 struct _\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-27 {\n+20namespace _\bD_\bu_\bn_\be {\n+21 namespace TypeTree {\n+22\n+27#ifndef DOXYGEN\n 28\n-_\b2_\b9 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = false;\n-30\n-_\b3_\b1 typedef TransformedNode _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be;\n-_\b3_\b2 typedef std::shared_ptr<transformed_type> _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-33\n-_\b3_\b4 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const Transformation&\n-t)\n-35 {\n-36 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be();\n-37 }\n-38\n-_\b3_\b9 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n-SourceNode> s, const Transformation& t)\n-40 {\n-41 return std::make_shared<transformed_type>();\n-42 }\n-43\n-44 };\n-45\n-46\n-47 template<typename SourceNode, typename Transformation, template<typename\n-Child, std::size_t> class TransformedNode>\n-_\b4_\b8 struct _\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-49 {\n-50\n-_\b5_\b1 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n-52\n-53 template<typename TC>\n-_\b5_\b4 struct _\br_\be_\bs_\bu_\bl_\bt\n-55 {\n-_\b5_\b6 typedef TransformedNode<TC, StaticDegree<SourceNode>::value> _\bt_\by_\bp_\be;\n-_\b5_\b7 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-_\b5_\b8 static const std::size_t _\bd_\be_\bg_\br_\be_\be = _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be_\b<_\bt_\by_\bp_\be_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-59 };\n-60\n-61 template<typename TC>\n-_\b6_\b2 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>&\n-children)\n-63 {\n-64 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(children);\n-65 }\n-66\n-67 template<typename TC>\n-_\b6_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, const std::array<std::\n-shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>& children)\n-69 {\n-70 return std::make_shared<typename result<TC>::type>(children);\n-71 }\n-72\n-73 };\n+29 template<typename T>\n+30 std::shared_ptr<T> convert_arg(const T& t)\n+31 {\n+32 return std::make_shared<T>(t);\n+33 }\n+34\n+35 template<typename T>\n+36 std::shared_ptr<T> convert_arg(T& t)\n+37 {\n+38 return stackobject_to_shared_ptr(t);\n+39 }\n+40\n+41 template<typename BaseType, typename T>\n+42 T& assertGridViewType(T& t)\n+43 {\n+44 static_assert((std::is_same<typename BaseType::Traits::GridViewType,\n+45 typename T::Traits::GridViewType>::value),\n+46 \"GridViewType must be equal in all components of composite type\");\n+47 return t;\n+48 }\n+49\n+50 // only bind to real rvalues\n+51 template<typename T>\n+52 typename std::enable_if<!std::is_lvalue_reference<T>::value,std::\n+shared_ptr<T> >::type convert_arg(T&& t)\n+53 {\n+54 return std::make_shared<T>(std::forward<T>(t));\n+55 }\n+56\n+57\n+58 namespace Experimental {\n+59\n+68 template<class BinaryOp, class Arg>\n+69 constexpr decltype(auto)\n+70 left_fold(const BinaryOp& binary_op, Arg&& arg)\n+71 {\n+72 return std::forward<Arg>(arg);\n+73 }\n 74\n-75\n-76 template<typename SourceNode, typename Transformation, template<typename\n-Child> class TransformedNode>\n-_\b7_\b7 struct _\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-78 {\n-79\n-_\b8_\b0 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n-81\n-82 template<typename TC>\n-_\b8_\b3 struct _\br_\be_\bs_\bu_\bl_\bt\n-84 {\n-_\b8_\b5 typedef TransformedNode<TC> _\bt_\by_\bp_\be;\n-_\b8_\b6 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-87 };\n-88\n-89 template<typename TC>\n-_\b9_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, const std::vector<std::shared_ptr<TC>>& children)\n-91 {\n-92 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(children);\n-93 }\n-94\n-95 template<typename TC>\n-_\b9_\b6 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, const std::\n-vector<std::shared_ptr<TC>>& children)\n-97 {\n-98 return std::make_shared<typename result<TC>::type>(children);\n-99 }\n-100\n-101 };\n-102\n-103\n-104 template<typename SourceNode, typename Transformation,\n-template<typename...> class TransformedNode>\n-_\b1_\b0_\b5 struct _\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-106 {\n+96 template<class BinaryOp, class Init, class Arg0, class... Args>\n+97 constexpr decltype(auto)\n+98 left_fold(const BinaryOp& binary_op, Init&& init, Arg0&& arg_0, Args&&...\n+args)\n+99 {\n+100 return left_fold(\n+101 binary_op,\n+102 binary_op(std::forward<Init>(init), std::forward<Arg0>(arg_0)),\n+103 std::forward<Args>(args)...);\n+104 }\n+105\n+106 } // namespace Experimental\n 107\n-_\b1_\b0_\b8 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n-109\n-110 template<typename... TC>\n-_\b1_\b1_\b1 struct _\br_\be_\bs_\bu_\bl_\bt\n-112 {\n-_\b1_\b1_\b3 typedef TransformedNode<TC...> _\bt_\by_\bp_\be;\n-_\b1_\b1_\b4 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-115 };\n-116\n-117 template<typename... TC>\n-_\b1_\b1_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, std::shared_ptr<TC>... children)\n-119 {\n-120 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(children...);\n-121 }\n+108\n+109#endif // DOXYGEN\n+110\n+112\n+119 template<typename Tree, typename Tag = StartTag>\n+_\b1_\b2_\b0 struct _\bT_\br_\be_\be_\bI_\bn_\bf_\bo\n+121 {\n 122\n-123 template<typename... TC>\n-_\b1_\b2_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, std::shared_ptr<TC>...\n-children)\n-125 {\n-126 return std::make_shared<typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type>(children...);\n-127 }\n+123 private:\n+124 // Start the tree traversal\n+125 typedef _\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b<_\bT_\br_\be_\be_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>> _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo;\n+126\n+127 public:\n 128\n-129 };\n-130\n-132\n-133 } // namespace TypeTree\n-134} //namespace Dune\n-135\n-136#endif // DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\b1_\b3_\b0 static const std::size_t _\bd_\be_\bp_\bt_\bh = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh;\n+131\n+_\b1_\b3_\b3 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt;\n+134\n+_\b1_\b3_\b6 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt;\n+137\n+138 };\n+139\n+140\n+141#ifndef DOXYGEN\n+142\n+143 /\n+/\n+********************************************************************************\n+144 // TreeInfo specializations for the different node types\n+145 /\n+/\n+********************************************************************************\n+146\n+147\n+148 // leaf node\n+149 template<typename Node>\n+150 struct _\bT_\br_\be_\be_\bI_\bn_\bf_\bo<Node,_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n+151 {\n+152\n+153 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1;\n+154\n+155 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1;\n+156\n+157 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = 1;\n+158\n+159 };\n+160\n+161\n+162 // power node - exploit the fact that all children are identical\n+163 template<typename Node>\n+164 struct TreeInfo<Node,PowerNodeTag>\n+165 {\n+166\n+167 typedef TreeInfo<typename Node::ChildType,NodeTag<typename Node::\n+ChildType>> ChildInfo;\n+168\n+169 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1 + ChildInfo::depth;\n+170\n+171 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1 + StaticDegree<Node>::value *\n+ChildInfo::nodeCount;\n+172\n+173 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = StaticDegree<Node>::value *\n+ChildInfo::leafCount;\n+174\n+175 };\n+176\n+177\n+178 namespace {\n+179\n+180 // TMP for iterating over the children of a composite node\n+181 // identical for both composite node implementations\n+182 template<typename Node, std::size_t k, std::size_t n>\n+183 struct generic_compositenode_children_info\n+184 {\n+185\n+186 typedef generic_compositenode_children_info<Node,k+1,n> NextChild;\n+187\n+188 // extract child info\n+189 typedef typename Node::template Child<k>::Type Child;\n+190 typedef NodeTag<Child> ChildTag;\n+191 typedef TreeInfo<Child,ChildTag> ChildInfo;\n+192\n+193 // combine information of current child with info about following children\n+194 static const std::size_t maxDepth = ChildInfo::depth > NextChild::maxDepth\n+? ChildInfo::depth : NextChild::maxDepth;\n+195\n+196 static const std::size_t nodeCount = ChildInfo::nodeCount + NextChild::\n+nodeCount;\n+197\n+198 static const std::size_t leafCount = ChildInfo::leafCount + NextChild::\n+leafCount;\n+199\n+200 };\n+201\n+202 // End of recursion\n+203 template<typename Node, std::size_t n>\n+204 struct generic_compositenode_children_info<Node,n,n>\n+205 {\n+206 static const std::size_t maxDepth = 0;\n+207\n+208 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 0;\n+209\n+210 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = 0;\n+211 };\n+212\n+213 } // anonymous namespace\n+214\n+215\n+216 // Struct for building information about composite node\n+217 template<typename Node>\n+218 struct GenericCompositeNodeInfo\n+219 {\n+220\n+221 typedef generic_compositenode_children_info<Node,0,StaticDegree<Node>::\n+value> Children;\n+222\n+223 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1 + Children::maxDepth;\n+224\n+225 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1 + Children::nodeCount;\n+226\n+227 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = Children::leafCount;\n+228\n+229 };\n+230\n+231\n+232 // CompositeNode: delegate to GenericCompositeNodeInfo\n+233 template<typename Node>\n+234 struct TreeInfo<Node,CompositeNodeTag>\n+235 : public GenericCompositeNodeInfo<Node>\n+236 {};\n+237\n+238\n+239#endif // DOXYGEN\n+240\n+241\n+242 using Dune::index_constant;\n+243 namespace Indices = Dune::Indices;\n+244\n+246\n+247 } // namespace TypeTree\n+248} //namespace Dune\n+249\n+250#endif // DUNE_TYPETREE_UTILITY_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n-decltype(Node::degree()) StaticDegree\n-Returns the statically known degree of the given Node type as a std::\n-integral_constant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(const SourceNode &s, const Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< transformed_type > transformed_storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static transformed_storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be\n-TransformedNode transformed_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC\n->, result< TC >::degree > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(const SourceNode &s, const Transformation\n-&t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< TC, StaticDegree< SourceNode >::value > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static const std::size_t degree\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(const SourceNode &s, const Transformation\n-&t, const std::vector< std::shared_ptr< TC > > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC\n-> > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< TC > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC... >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC... >::type transform(const SourceNode &s, const\n-Transformation &t, std::shared_ptr< TC >... children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNode< TC... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n+auto leafCount(const Tree &tree)\n+The number of leaf nodes in the Tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n+auto nodeCount(const Tree &tree)\n+The total number of nodes in the Tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:524\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n+auto depth(const Tree &tree)\n+The depth of the TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:508\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a leaf node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo\n+Struct for obtaining some basic structural information about a TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n+static const std::size_t leafCount\n+The number of leaf nodes in the TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n+static const std::size_t depth\n+The depth of the TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n+static const std::size_t nodeCount\n+The total number of nodes in the TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:133\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00038.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00038.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: powernode.hh File Reference</title>\n+<title>dune-typetree: pairtraversal.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,47 +70,46 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">powernode.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">pairtraversal.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <cassert></code><br />\n-<code>#include <array></code><br />\n-<code>#include <memory></code><br />\n-<code>#include <type_traits></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <dune/common/std/type_traits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <dune/common/std/type_traits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00059_source.html\">dune/typetree/traversal.hh</a>></code><br />\n </div>\n <p><a href=\"a00038_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01288.html\">Dune::TypeTree::PowerNode< T, k ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Collect k instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01288.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01292.html\">Dune::TypeTree::PowerNode< T, k >::Child< i ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01292.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a8b542590e97d908492307e64a9d8ec99\" id=\"r_a8b542590e97d908492307e64a9d8ec99\"><td class=\"memTemplParams\" colspan=\"2\">template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0> </td></tr>\n+<tr class=\"memitem:a8b542590e97d908492307e64a9d8ec99\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Dune::TypeTree::Detail::applyToTreePair</a> (T1 &&tree1, T2 &&tree2, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V &&visitor)</td></tr>\n+<tr class=\"separator:a8b542590e97d908492307e64a9d8ec99\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga677ef3ed3418747507fd30687854f5c4\" id=\"r_ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree1 , typename Tree2 , typename Visitor > </td></tr>\n+<tr class=\"memitem:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">Dune::TypeTree::applyToTreePair</a> (Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)</td></tr>\n+<tr class=\"memdesc:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply visitor to a pair of TypeTrees. <br /></td></tr>\n+<tr class=\"separator:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,35 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-powernode.hh File Reference\n-#include <cassert>\n-#include <array>\n-#include <memory>\n-#include <type_traits>\n-#include <dune/common/typetraits.hh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+pairtraversal.hh File Reference\n #include <dune/common/std/type_traits.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b,_\b _\bk_\b _\b>\n-\u00a0 Collect k instances of type T within a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b,_\b _\bk_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bi_\b _\b>\n-\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<\n+(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0>\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br (T1 &&tree1, T2 &&tree2, TreePath\n+ _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V &&visitor)\n+\u00a0\n+template<typename Tree1 , typename Tree2 , typename Visitor >\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br (Tree1 &&tree1, Tree2 &&tree2, Visitor\n+ &&visitor)\n+\u00a0 Apply visitor to a pair of TypeTrees.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00038_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00038_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: powernode.hh Source File</title>\n+<title>dune-typetree: pairtraversal.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,401 +74,152 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">powernode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">pairtraversal.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00038.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_POWERNODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_POWERNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00074.html\">dune/typetree/visitor.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00059.html\">dune/typetree/traversal.hh</a>></span></div>\n <div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/childextraction.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00044.html\">dune/typetree/typetraits.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> PowerNode, <span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">struct </span>AssertPowerNodeChildCount</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> : <span class=\"keyword\">public</span> std::enable_if<std::is_same<</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> typename PowerNode::ChildType,</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> T>::value &&</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> PowerNode::degree() == k,</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> T></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {};</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00025\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html\"> 25</a></span> <span class=\"keyword\">namespace </span>Detail {</div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"comment\">/* The signature is the same as for the public applyToTreePair</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span><span class=\"comment\"> * function in Dune::Typtree, despite the additionally passed</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"comment\"> * treePath argument. The path passed here is associated to</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"comment\"> * the tree and the relative paths of the children (wrt. to tree)</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"comment\"> * are appended to this. Hence the behavior of the public function</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"comment\"> * is resembled by passing an empty treePath.</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"comment\"> * This is the overload for leaf traversal</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T1, <span class=\"keyword\">class </span>T2, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> std::enable_if_t<(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf), <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\"> 40</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(T1&& tree1, T2&& tree2, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> visitor.leaf(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html\"> 51</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01288.html\">PowerNode</a></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\"> 57</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\"> 60</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\">isPower</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span><span class=\"comment\"> * This is the general overload doing static child traversal.</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T1, <span class=\"keyword\">class </span>T2, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> std::enable_if_t<not(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf), <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(T1&& tree1, T2&& tree2, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"comment\">// Do we really want to take care for const-ness of the Tree</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"comment\">// when instanciating VisitChild below? I'd rather expect this:</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"comment\">// using Tree1 = std::decay_t<T1>;</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> <span class=\"comment\">// using Tree2 = std::decay_t<T2>;</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"comment\">// using Visitor = std::decay_t<V>;</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">using </span>Tree1 = std::remove_reference_t<T1>;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">using </span>Tree2 = std::remove_reference_t<T2>;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> visitor.pre(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a909808b4131a00efefcf640df313504f\"> 63</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01288.html#a909808b4131a00efefcf640df313504f\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\"> 65</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a> ()</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,k>{};</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> <span class=\"comment\">// check which type of traversal is supported by the trees</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">using </span>allowDynamicTraversal = std::conjunction<</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> Dune::Std::is_detected<DynamicTraversalConcept,Tree1>,</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> Dune::Std::is_detected<DynamicTraversalConcept,Tree2>>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> <span class=\"keyword\">using </span>allowStaticTraversal = std::conjunction<</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> Dune::Std::is_detected<StaticTraversalConcept,Tree1>,</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> Dune::Std::is_detected<StaticTraversalConcept,Tree2>>;</div>\n <div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\"> 71</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a> <a class=\"code hl_typedef\" href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"comment\">// both trees must support either dynamic or static traversal</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\"> 74</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\">ChildType</a>;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\"> 77</a></span> <span class=\"keyword\">typedef</span> std::array<std::shared_ptr<T>,k> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html\"> 82</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01292.html\">Child</a></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> {</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\"> 88</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\">Type</a>;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\"> 91</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\"> 102</a></span> T& <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"comment\">// create a dynamic or static index range</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">auto</span> indices = [&]{</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(preferDynamicTraversal::value && allowDynamicTraversal::value)</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keywordflow\">return</span> Dune::range(std::size_t(tree1.degree()));</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> Dune::range(tree1.degree());</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value || allowStaticTraversal::value) {</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> Dune::Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">auto</span>&& child1 = tree1.child(i);</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">auto</span>&& child2 = tree2.child(i);</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">using </span>Child1 = std::decay_t<<span class=\"keyword\">decltype</span>(child1)>;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">using </span>Child2 = std::decay_t<<span class=\"keyword\">decltype</span>(child2)>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> visitor.beforeChild(tree1, child1, tree2, child2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"comment\">// This requires that visitor.in(...) can always be instantiated,</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"comment\">// even if there's a single child only.</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keywordflow\">if</span> (i>0)</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> visitor.in(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree1,Child1,Tree2,Child2,TreePath>::value;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(visitChild) {</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(child1, child2, childTreePath, visitor);</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> }</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> visitor.afterChild(tree1, child1, tree2, child2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> });</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> visitor.post(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> }</div>\n <div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\"> 113</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\">child</a> (index_constant<i> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\"> 124</a></span> std::shared_ptr<T> <a class=\"code hl_function\" href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\">childStorage</a> (index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00135\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\"> 135</a></span> std::shared_ptr<const T> <a class=\"code hl_function\" href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\">childStorage</a> (index_constant<i> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> {</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00143\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\"> 143</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\">setChild</a> (T& t, index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> {</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00151\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\"> 151</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\">setChild</a> (T&& t, index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> {</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> _children[i] = convert_arg(std::move(t));</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a177c68f780281cea78020f3085aac719\"> 159</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a177c68f780281cea78020f3085aac719\">setChild</a> (std::shared_ptr<T> st, index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> {</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">static_assert</span>((i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> _children[i] = std::move(st);</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00175\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\"> 175</a></span> T& <a class=\"code hl_function\" href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\">child</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> {</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00185\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\"> 185</a></span> <span class=\"keyword\">const</span> T& <a class=\"code hl_function\" href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00195\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#af5792eced4832509032040dfd86e8c28\"> 195</a></span> std::shared_ptr<T> <a class=\"code hl_function\" href=\"a01288.html#af5792eced4832509032040dfd86e8c28\">childStorage</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> {</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00205\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\"> 205</a></span> std::shared_ptr<const T> <a class=\"code hl_function\" href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00212\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\"> 212</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\">setChild</a> (std::size_t i, T& t)</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> {</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\"> 219</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\">setChild</a> (std::size_t i, T&& t)</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> {</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> _children[i] = convert_arg(std::move(t));</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00226\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a906b42c59829611461f84f484c00e10b\"> 226</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01288.html#a906b42c59829611461f84f484c00e10b\">setChild</a> (std::size_t i, std::shared_ptr<T> st)</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> {</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> assert(i < <a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> _children[i] = std::move(st);</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00232\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\"> 232</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keywordflow\">return</span> _children;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"comment\">// The following two methods require a little bit of SFINAE trickery to work correctly:</span></div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> <span class=\"comment\">// We have to make sure that they don't shadow the methods for direct child access because</span></div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> <span class=\"comment\">// those get called by the generic child() machinery. If that machinery picks up the methods</span></div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> <span class=\"comment\">// defined below, we have an infinite recursion.</span></div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> <span class=\"comment\">// So the methods make sure that either</span></div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span> <span class=\"comment\">// * there are more than one argument. In that case, we got multiple indices and can forward</span></div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> <span class=\"comment\">// to the general machine.</span></div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> <span class=\"comment\">// * the first argument is not a valid flat index, i.e. either a std::size_t or an index_constant.</span></div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"comment\">// The argument thus has to be some kind of TreePath instance that we can also pass to the</span></div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"comment\">// generic machine.</span></div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> <span class=\"comment\">// The above SFINAE logic works, but there is still a problem with the return type deduction.</span></div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"comment\">// We have to do a lazy lookup of the return type after SFINAE has succeeded, otherwise the return</span></div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> <span class=\"comment\">// type deduction will trigger the infinite recursion.</span></div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"foldopen\" id=\"foldopen00266\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\"> 266</a></span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\">child</a> (Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (I0 i0, I... i)</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> {</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> );</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> </div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"foldopen\" id=\"foldopen00286\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\"> 286</a></span> <span class=\"keyword\">const</span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\">child</a> (Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">child</a> (I0 i0, I... i) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> {</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> );</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> </div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00315\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\"> 315</a></span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> ()</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00319\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\"> 319</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\">PowerNode</a> (<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>& children)</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> : _children(children)</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00324\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\"> 324</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\">PowerNode</a> (T& t, <span class=\"keywordtype\">bool</span> distinct_objects = <span class=\"keyword\">true</span>)</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> <span class=\"keywordflow\">if</span> (distinct_objects)</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> {</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">for</span> (<span class=\"keyword\">typename</span> NodeStorage::iterator it = _children.begin(); it != _children.end(); ++it)</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> *it = std::make_shared<T>(t);</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> }</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> {</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> std::shared_ptr<T> sp = stackobject_to_shared_ptr(t);</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> std::fill(_children.begin(),_children.end(),sp);</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> }</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> </div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00341\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01288.html#a28b85a6932b997818d51b6227a792116\"> 341</a></span> <a class=\"code hl_function\" href=\"a01288.html#a28b85a6932b997818d51b6227a792116\">PowerNode</a>(T& t1, T& t2, ...)</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> </div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> </div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> std::enable_if_t<</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> std::conjunction<std::is_same<ChildType, std::decay_t<Children>>...>::value</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> ,<span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> (Children&&... children)</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> {</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> <span class=\"keyword\">static_assert</span>(<a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() == <span class=\"keyword\">sizeof</span>...(Children), <span class=\"stringliteral\">"PowerNode constructor is called with incorrect number of children"</span>);</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> _children = <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>{convert_arg(std::forward<Children>(children))...};</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> }</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> </div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> std::enable_if_t<</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> std::conjunction<std::is_same<ChildType, Children>...>::value</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> ,<span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <a class=\"code hl_function\" href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">PowerNode</a> (std::shared_ptr<Children>... children)</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> {</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> <span class=\"keyword\">static_assert</span>(<a class=\"code hl_function\" href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">degree</a>() == <span class=\"keyword\">sizeof</span>...(Children), <span class=\"stringliteral\">"PowerNode constructor is called with incorrect number of children"</span>);</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> _children = <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a>{children...};</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> }</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> </div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> </div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> <a class=\"code hl_typedef\" href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">NodeStorage</a> _children;</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> };</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> } <span class=\"comment\">// namespace Detail</span></div>\n </div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> </div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERNODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00044_html\"><div class=\"ttname\"><a href=\"a00044.html\">typetraits.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">childextraction.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree1, <span class=\"keyword\">typename</span> Tree2, <span class=\"keyword\">typename</span> Visitor></div>\n+<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\"> 128</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">applyToTreePair</a>(Tree1&& tree1, Tree2&& tree2, Visitor&& visitor)</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> {</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Detail::applyToTreePair</a>(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor);</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00059_html\"><div class=\"ttname\"><a href=\"a00059.html\">traversal.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00074_html\"><div class=\"ttname\"><a href=\"a00074.html\">visitor.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00090_html_ga677ef3ed3418747507fd30687854f5c4\"><div class=\"ttname\"><a href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">Dune::TypeTree::applyToTreePair</a></div><div class=\"ttdeci\">void applyToTreePair(Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to a pair of TypeTrees.</div><div class=\"ttdef\"><b>Definition</b> pairtraversal.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n-<div class=\"ttc\" id=\"aa01288_html\"><div class=\"ttname\"><a href=\"a01288.html\">Dune::TypeTree::PowerNode</a></div><div class=\"ttdoc\">Collect k instances of type T within a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:52</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a01c54073ccb06fbf74b4387fb3bd8ce0\"><div class=\"ttname\"><a href=\"a01288.html#a01c54073ccb06fbf74b4387fb3bd8ce0\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(T &t, index_constant< i >={})</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:143</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a0440e91e7ff5ff95f75b4e5bf48efcdc\"><div class=\"ttname\"><a href=\"a01288.html#a0440e91e7ff5ff95f75b4e5bf48efcdc\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">T & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:175</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a14e42fd1fd8a7197eb89f5a1e462912c\"><div class=\"ttname\"><a href=\"a01288.html#a14e42fd1fd8a7197eb89f5a1e462912c\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const T & child(index_constant< i >={}) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a177c68f780281cea78020f3085aac719\"><div class=\"ttname\"><a href=\"a01288.html#a177c68f780281cea78020f3085aac719\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::shared_ptr< T > st, index_constant< i >={})</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:159</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a1b45c11ce23d0b423db5f8a13a63beb2\"><div class=\"ttname\"><a href=\"a01288.html#a1b45c11ce23d0b423db5f8a13a63beb2\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< T > childStorage(index_constant< i >={})</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:124</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a28b85a6932b997818d51b6227a792116\"><div class=\"ttname\"><a href=\"a01288.html#a28b85a6932b997818d51b6227a792116\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(T &t1, T &t2,...)</div><div class=\"ttdoc\">Initialize all children with the passed-in objects.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:341</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a35da572efe78f590954295f0bda96c1e\"><div class=\"ttname\"><a href=\"a01288.html#a35da572efe78f590954295f0bda96c1e\">Dune::TypeTree::PowerNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:232</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a3bb2aeb17ecf20beb0818e30670e2d0c\"><div class=\"ttname\"><a href=\"a01288.html#a3bb2aeb17ecf20beb0818e30670e2d0c\">Dune::TypeTree::PowerNode::NodeStorage</a></div><div class=\"ttdeci\">std::array< std::shared_ptr< T >, k > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:77</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a4aea378b74e815e059cb764570a3bb3a\"><div class=\"ttname\"><a href=\"a01288.html#a4aea378b74e815e059cb764570a3bb3a\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const T > childStorage(index_constant< i >={}) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:135</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a6880435ea965546474e0c5e9e6a09ebe\"><div class=\"ttname\"><a href=\"a01288.html#a6880435ea965546474e0c5e9e6a09ebe\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(T &t, bool distinct_objects=true)</div><div class=\"ttdoc\">Initialize all children with copies of a storage object constructed from the parameter t.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:324</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a6c3688a559a975166adfb990fe6de522\"><div class=\"ttname\"><a href=\"a01288.html#a6c3688a559a975166adfb990fe6de522\">Dune::TypeTree::PowerNode::NodeTag</a></div><div class=\"ttdeci\">PowerNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a PowerNode.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:71</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a6cf89c78972c89285d4e0599191dfc52\"><div class=\"ttname\"><a href=\"a01288.html#a6cf89c78972c89285d4e0599191dfc52\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const T & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:185</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a7896358bf0fec62631a5da40338157d9\"><div class=\"ttname\"><a href=\"a01288.html#a7896358bf0fec62631a5da40338157d9\">Dune::TypeTree::PowerNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:65</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a7fa2fea31364fcc94fabedeb6ce2cde5\"><div class=\"ttname\"><a href=\"a01288.html#a7fa2fea31364fcc94fabedeb6ce2cde5\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const T > childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:205</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a906b42c59829611461f84f484c00e10b\"><div class=\"ttname\"><a href=\"a01288.html#a906b42c59829611461f84f484c00e10b\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, std::shared_ptr< T > st)</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:226</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_a909808b4131a00efefcf640df313504f\"><div class=\"ttname\"><a href=\"a01288.html#a909808b4131a00efefcf640df313504f\">Dune::TypeTree::PowerNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:63</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aa1b69a455bafdbb8b040bbe9071614cd\"><div class=\"ttname\"><a href=\"a01288.html#aa1b69a455bafdbb8b040bbe9071614cd\">Dune::TypeTree::PowerNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aaa6652060b89f583524e5fdac39d75e9\"><div class=\"ttname\"><a href=\"a01288.html#aaa6652060b89f583524e5fdac39d75e9\">Dune::TypeTree::PowerNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:60</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aab21ac4bd1e1a6e7cfa81c00e5b368bb\"><div class=\"ttname\"><a href=\"a01288.html#aab21ac4bd1e1a6e7cfa81c00e5b368bb\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode(const NodeStorage &children)</div><div class=\"ttdoc\">Initialize the PowerNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:319</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aacce4d46c79116347ef62c8f59235144\"><div class=\"ttname\"><a href=\"a01288.html#aacce4d46c79116347ef62c8f59235144\">Dune::TypeTree::PowerNode::ChildType</a></div><div class=\"ttdeci\">T ChildType</div><div class=\"ttdoc\">The type of each child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:74</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aae8dcdf40a53f0fb1b7ba77219d3bc58\"><div class=\"ttname\"><a href=\"a01288.html#aae8dcdf40a53f0fb1b7ba77219d3bc58\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">T & child(index_constant< i >={})</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:102</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_abdad58173ebc7dd2202682b448837eb7\"><div class=\"ttname\"><a href=\"a01288.html#abdad58173ebc7dd2202682b448837eb7\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:266</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_ac3c28a1c5cef5e0e677d3cf78e8a870d\"><div class=\"ttname\"><a href=\"a01288.html#ac3c28a1c5cef5e0e677d3cf78e8a870d\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, T &&t)</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:219</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_ad47d5280b3f68a38e4e7f83cba61ed9e\"><div class=\"ttname\"><a href=\"a01288.html#ad47d5280b3f68a38e4e7f83cba61ed9e\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(T &&t, index_constant< i >={})</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:151</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_ae59c7d90f33f41b786fce61c519a6e2d\"><div class=\"ttname\"><a href=\"a01288.html#ae59c7d90f33f41b786fce61c519a6e2d\">Dune::TypeTree::PowerNode::PowerNode</a></div><div class=\"ttdeci\">PowerNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:315</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aea3ff748f7ea3c66b0adff2e73a17311\"><div class=\"ttname\"><a href=\"a01288.html#aea3ff748f7ea3c66b0adff2e73a17311\">Dune::TypeTree::PowerNode::child</a></div><div class=\"ttdeci\">const ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:286</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_aeaf6c1f51f1a9313ad69f86a41bf1764\"><div class=\"ttname\"><a href=\"a01288.html#aeaf6c1f51f1a9313ad69f86a41bf1764\">Dune::TypeTree::PowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, T &t)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:212</div></div>\n-<div class=\"ttc\" id=\"aa01288_html_af5792eced4832509032040dfd86e8c28\"><div class=\"ttname\"><a href=\"a01288.html#af5792eced4832509032040dfd86e8c28\">Dune::TypeTree::PowerNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< T > childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:195</div></div>\n-<div class=\"ttc\" id=\"aa01292_html\"><div class=\"ttname\"><a href=\"a01292.html\">Dune::TypeTree::PowerNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa01292_html_a010f3af06b3c2eddd61d91044f1605bb\"><div class=\"ttname\"><a href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\">Dune::TypeTree::PowerNode::Child::type</a></div><div class=\"ttdeci\">T type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:91</div></div>\n-<div class=\"ttc\" id=\"aa01292_html_a36478705f252b4739ce9e2a63fa7a43a\"><div class=\"ttname\"><a href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\">Dune::TypeTree::PowerNode::Child::Type</a></div><div class=\"ttdeci\">T Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> powernode.hh:88</div></div>\n-<div class=\"ttc\" id=\"aa01552_html\"><div class=\"ttname\"><a href=\"a01552.html\">Dune::TypeTree::IsTreePath</a></div><div class=\"ttdoc\">Check if type represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:184</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a8b542590e97d908492307e64a9d8ec99\"><div class=\"ttname\"><a href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Dune::TypeTree::Detail::applyToTreePair</a></div><div class=\"ttdeci\">void applyToTreePair(T1 &&tree1, T2 &&tree2, TreePath treePath, V &&visitor)</div><div class=\"ttdef\"><b>Definition</b> pairtraversal.hh:40</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,463 +1,161 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-powernode.hh\n+pairtraversal.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_POWERNODE_HH\n-7#define DUNE_TYPETREE_POWERNODE_HH\n+6#ifndef DUNE_TYPETREE_PAIRTRAVERSAL_HH\n+7#define DUNE_TYPETREE_PAIRTRAVERSAL_HH\n 8\n-9#include <cassert>\n-10#include <array>\n-11#include <memory>\n-12#include <type_traits>\n-13\n-14#include <dune/common/typetraits.hh>\n-15#include <dune/common/std/type_traits.hh>\n+9#include <dune/common/std/type_traits.hh>\n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n 16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-21\n-22namespace _\bD_\bu_\bn_\be {\n-23 namespace TypeTree {\n-24\n-31#ifndef DOXYGEN\n-32\n-34 template<typename PowerNode, typename T, std::size_t k>\n-35 struct AssertPowerNodeChildCount\n-36 : public std::enable_if<std::is_same<\n-37 typename PowerNode::ChildType,\n-38 T>::value &&\n-39 PowerNode::degree() == k,\n-40 T>\n-41 {};\n-42\n-43#endif\n+17namespace _\bD_\bu_\bn_\be {\n+18 namespace TypeTree {\n+19\n+_\b2_\b5 namespace Detail {\n+26\n+27 /* The signature is the same as for the public applyToTreePair\n+28 * function in Dune::Typtree, despite the additionally passed\n+29 * treePath argument. The path passed here is associated to\n+30 * the tree and the relative paths of the children (wrt. to tree)\n+31 * are appended to this. Hence the behavior of the public function\n+32 * is resembled by passing an empty treePath.\n+33 */\n+34\n+35 /*\n+36 * This is the overload for leaf traversal\n+37 */\n+38 template<class T1, class T2, class TreePath, class V,\n+39 std::enable_if_t<(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf),\n+int> = 0>\n+_\b4_\b0 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(T1&& tree1, T2&& tree2, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n+41 {\n+42 visitor.leaf(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+43 }\n 44\n-50 template<typename T, std::size_t k>\n-_\b5_\b1 class _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-52 {\n-53\n-54 public:\n-55\n-_\b5_\b7 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n-58\n-_\b6_\b0 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = true;\n+45 /*\n+46 * This is the general overload doing static child traversal.\n+47 */\n+48 template<class T1, class T2, class TreePath, class V,\n+49 std::enable_if_t<not(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf),\n+int> = 0>\n+50 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(T1&& tree1, T2&& tree2, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n+51 {\n+52 // Do we really want to take care for const-ness of the Tree\n+53 // when instanciating VisitChild below? I'd rather expect this:\n+54 // using Tree1 = std::decay_t<T1>;\n+55 // using Tree2 = std::decay_t<T2>;\n+56 // using Visitor = std::decay_t<V>;\n+57 using Tree1 = std::remove_reference_t<T1>;\n+58 using Tree2 = std::remove_reference_t<T2>;\n+59 using Visitor = std::remove_reference_t<V>;\n+60 visitor.pre(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n 61\n-_\b6_\b3 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n-64\n-_\b6_\b5 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n-66 {\n-67 return std::integral_constant<std::size_t,k>{};\n-68 }\n+62 // check which type of traversal is supported by the trees\n+63 using allowDynamicTraversal = std::conjunction<\n+64 Dune::Std::is_detected<DynamicTraversalConcept,Tree1>,\n+65 Dune::Std::is_detected<DynamicTraversalConcept,Tree2>>;\n+66 using allowStaticTraversal = std::conjunction<\n+67 Dune::Std::is_detected<StaticTraversalConcept,Tree1>,\n+68 Dune::Std::is_detected<StaticTraversalConcept,Tree2>>;\n 69\n-_\b7_\b1 typedef _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+70 // both trees must support either dynamic or static traversal\n+71 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n 72\n-_\b7_\b4 typedef T _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n+73 // the visitor may specify preferred dynamic traversal\n+74 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n+TreePathType::dynamic>;\n 75\n-_\b7_\b7 typedef std::array<std::shared_ptr<T>,k> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-78\n-79\n-81 template<std::size_t i>\n-_\b8_\b2 struct _\bC_\bh_\bi_\bl_\bd\n-83 {\n-84\n-85 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-86\n-_\b8_\b8 typedef T _\bT_\by_\bp_\be;\n-89\n-_\b9_\b1 typedef T _\bt_\by_\bp_\be;\n-92 };\n-93\n-96\n-98\n-101 template<std::size_t i>\n-_\b1_\b0_\b2 T& _\bc_\bh_\bi_\bl_\bd (index_constant<i> = {})\n-103 {\n-104 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-105 return *_children[i];\n+76 // create a dynamic or static index range\n+77 auto indices = [&]{\n+78 if constexpr(preferDynamicTraversal::value && allowDynamicTraversal::value)\n+79 return Dune::range(std::size_t(tree1.degree()));\n+80 else\n+81 return Dune::range(tree1.degree());\n+82 }();\n+83\n+84 if constexpr(allowDynamicTraversal::value || allowStaticTraversal::value) {\n+85 Dune::Hybrid::forEach(indices, [&](auto i) {\n+86 auto&& child1 = tree1.child(i);\n+87 auto&& child2 = tree2.child(i);\n+88 using Child1 = std::decay_t<decltype(child1)>;\n+89 using Child2 = std::decay_t<decltype(child2)>;\n+90\n+91 visitor.beforeChild(tree1, child1, tree2, child2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+92\n+93 // This requires that visitor.in(...) can always be instantiated,\n+94 // even if there's a single child only.\n+95 if (i>0)\n+96 visitor.in(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+97\n+98 constexpr bool visitChild = Visitor::template\n+VisitChild<Tree1,Child1,Tree2,Child2,TreePath>::value;\n+99 if constexpr(visitChild) {\n+100 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+101 _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(child1, child2, childTreePath, visitor);\n+102 }\n+103\n+104 visitor.afterChild(tree1, child1, tree2, child2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+105 });\n 106 }\n-107\n+107 visitor.post(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+108 }\n 109\n-112 template<std::size_t i>\n-_\b1_\b1_\b3 const T& _\bc_\bh_\bi_\bl_\bd (index_constant<i> = {}) const\n-114 {\n-115 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-116 return *_children[i];\n-117 }\n-118\n-120\n-123 template<std::size_t i>\n-_\b1_\b2_\b4 std::shared_ptr<T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<i> = {})\n-125 {\n-126 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-127 return _children[i];\n-128 }\n-129\n-131\n-134 template<std::size_t i>\n-_\b1_\b3_\b5 std::shared_ptr<const T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<i> = {}) const\n-136 {\n-137 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-138 return _children[i];\n-139 }\n-140\n-142 template<std::size_t i>\n-_\b1_\b4_\b3 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (T& t, index_constant<i> = {})\n-144 {\n-145 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-146 _children[i] = stackobject_to_shared_ptr(t);\n-147 }\n-148\n-150 template<std::size_t i>\n-_\b1_\b5_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (T&& t, index_constant<i> = {})\n-152 {\n-153 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-154 _children[i] = convert_arg(std::move(t));\n-155 }\n-156\n-158 template<std::size_t i>\n-_\b1_\b5_\b9 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::shared_ptr<T> st, index_constant<i> = {})\n-160 {\n-161 static_assert((i < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n-162 _children[i] = std::move(st);\n-163 }\n-164\n-166\n-167\n-170\n-172\n-_\b1_\b7_\b5 T& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n-176 {\n-177 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-178 return *_children[i];\n-179 }\n-180\n-182\n-_\b1_\b8_\b5 const T& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n-186 {\n-187 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-188 return *_children[i];\n-189 }\n-190\n-192\n-_\b1_\b9_\b5 std::shared_ptr<T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n-196 {\n-197 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-198 return _children[i];\n-199 }\n-200\n-202\n-_\b2_\b0_\b5 std::shared_ptr<const T> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n-206 {\n-207 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-208 return _children[i];\n-209 }\n-210\n-_\b2_\b1_\b2 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, T& t)\n-213 {\n-214 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-215 _children[i] = stackobject_to_shared_ptr(t);\n-216 }\n-217\n-_\b2_\b1_\b9 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, T&& t)\n-220 {\n-221 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-222 _children[i] = convert_arg(std::move(t));\n-223 }\n-224\n-_\b2_\b2_\b6 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, std::shared_ptr<T> st)\n-227 {\n-228 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-229 _children[i] = std::move(st);\n-230 }\n-231\n-_\b2_\b3_\b2 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-233 {\n-234 return _children;\n-235 }\n-236\n-238\n-241\n-242 // The following two methods require a little bit of SFINAE trickery to\n-work correctly:\n-243 // We have to make sure that they don't shadow the methods for direct child\n-access because\n-244 // those get called by the generic child() machinery. If that machinery\n-picks up the methods\n-245 // defined below, we have an infinite recursion.\n-246 // So the methods make sure that either\n-247 //\n-248 // * there are more than one argument. In that case, we got multiple\n-indices and can forward\n-249 // to the general machine.\n-250 //\n-251 // * the first argument is not a valid flat index, i.e. either a std::\n-size_t or an index_constant.\n-252 // The argument thus has to be some kind of TreePath instance that we can\n-also pass to the\n-253 // generic machine.\n-254 //\n-255 // The above SFINAE logic works, but there is still a problem with the\n-return type deduction.\n-256 // We have to do a lazy lookup of the return type after SFINAE has\n-succeeded, otherwise the return\n-257 // type deduction will trigger the infinite recursion.\n-258\n-260\n-264#ifdef DOXYGEN\n-265 template<typename... Indices>\n-_\b2_\b6_\b6 ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n-267#else\n-268 template<typename I0, typename... I,\n-269 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n-270 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i)\n-271#endif\n-272 {\n-273 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n-274 \"You cannot use the member function child() with an empty TreePath, use the\n-freestanding version child(node,treePath) instead.\"\n-275 );\n-276 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n-277 }\n-278\n-280\n-284#ifdef DOXYGEN\n-285 template<typename... Indices>\n-_\b2_\b8_\b6 const ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n-287#else\n-288 template<typename I0, typename... I,\n-289 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n-290 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i) const\n-291#endif\n-292 {\n-293 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n-294 \"You cannot use the member function child() with an empty TreePath, use the\n-freestanding version child(node,treePath) instead.\"\n-295 );\n-296 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n-297 }\n-298\n-300\n-303\n-304 protected:\n-305\n-307\n-_\b3_\b1_\b5 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be ()\n-316 {}\n-317\n-_\b3_\b1_\b9 explicit _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& children)\n-320 : _children(children)\n-321 {}\n-322\n-_\b3_\b2_\b4 explicit _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (T& t, bool distinct_objects = true)\n-325 {\n-326 if (distinct_objects)\n-327 {\n-328 for (typename NodeStorage::iterator it = _children.begin(); it !=\n-_children.end(); ++it)\n-329 *it = std::make_shared<T>(t);\n-330 }\n-331 else\n-332 {\n-333 std::shared_ptr<T> sp = stackobject_to_shared_ptr(t);\n-334 std::fill(_children.begin(),_children.end(),sp);\n-335 }\n-336 }\n-337\n-338#ifdef DOXYGEN\n-339\n-_\b3_\b4_\b1 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be(T& t1, T& t2, ...)\n-342 {}\n-343\n-344#else\n-345\n-346 template<typename... Children,\n-347 std::enable_if_t<\n-348 std::conjunction<std::is_same<ChildType, std::decay_t<Children>>...>::value\n-349 ,int> = 0>\n-350 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (Children&&... children)\n-351 {\n-352 static_assert(_\bd_\be_\bg_\br_\be_\be() == sizeof...(Children), \"PowerNode constructor is\n-called with incorrect number of children\");\n-353 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{convert_arg(std::forward<Children>(children))...};\n-354 }\n-355\n-356 template<typename... Children,\n-357 std::enable_if_t<\n-358 std::conjunction<std::is_same<ChildType, Children>...>::value\n-359 ,int> = 0>\n-360 _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n-361 {\n-362 static_assert(_\bd_\be_\bg_\br_\be_\be() == sizeof...(Children), \"PowerNode constructor is\n-called with incorrect number of children\");\n-363 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{children...};\n-364 }\n-365\n-366#endif // DOXYGEN\n-367\n-369\n-370 private:\n-371 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n-372 };\n-373\n-375\n-376 } // namespace TypeTree\n-377} //namespace Dune\n-378\n-379#endif // DUNE_TYPETREE_POWERNODE_HH\n-_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n-_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+110 } // namespace Detail\n+111\n+113\n+127 template<typename Tree1, typename Tree2, typename Visitor>\n+_\b1_\b2_\b8 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(Tree1&& tree1, Tree2&& tree2, Visitor&& visitor)\n+129 {\n+130 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(tree1, tree2, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor);\n+131 }\n+132\n+134\n+135 } // namespace TypeTree\n+136} //namespace Dune\n+137\n+138#endif // DUNE_TYPETREE_PAIRTRAVERSAL_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br\n+void applyToTreePair(Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)\n+Apply visitor to a pair of TypeTrees.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pairtraversal.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n+T... > &tp, std::size_t i)\n+Appends a run time index to a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto hybridTreePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-Collect k instances of type T within a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(T &t, index_constant< i >={})\n-Sets the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-T & child(std::size_t i)\n-Returns the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const T & child(index_constant< i >={}) const\n-Returns the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::shared_ptr< T > st, index_constant< i >={})\n-Sets the stored value representing the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< T > childStorage(index_constant< i >={})\n-Returns the storage of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-PowerNode(T &t1, T &t2,...)\n-Initialize all children with the passed-in objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:341\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-const NodeStorage & nodeStorage() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::array< std::shared_ptr< T >, k > NodeStorage\n-The type used for storing the children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< const T > childStorage(index_constant< i >={}) const\n-Returns the storage of the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-PowerNode(T &t, bool distinct_objects=true)\n-Initialize all children with copies of a storage object constructed from the\n-parameter t.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:324\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-PowerNodeTag NodeTag\n-The type tag that describes a PowerNode.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const T & child(std::size_t i) const\n-Returns the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static constexpr auto degree()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< const T > childStorage(std::size_t i) const\n-Returns the storage of the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, std::shared_ptr< T > st)\n-Sets the stored value representing the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a non composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Mark this class as non leaf in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n-static const bool isPower\n-Mark this class as a power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-PowerNode(const NodeStorage &children)\n-Initialize the PowerNode with a copy of the passed-in storage type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n-T ChildType\n-The type of each child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-T & child(index_constant< i >={})\n-Returns the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined & child(Indices... indices)\n-Returns the child given by the list of indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:266\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, T &&t)\n-Store the passed value in i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(T &&t, index_constant< i >={})\n-Store the passed value in i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-PowerNode()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:315\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const ImplementationDefined & child(Indices... indices)\n-Returns the child given by the list of indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:286\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, T &t)\n-Sets the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< T > childStorage(std::size_t i)\n-Returns the storage of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-Access to the type and storage type of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n-T type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n-T Type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powernode.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-Check if type represents a tree path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:184\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br\n+void applyToTreePair(T1 &&tree1, T2 &&tree2, TreePath treePath, V &&visitor)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pairtraversal.hh:40\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00041.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00041.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: treepath.hh File Reference</title>\n+<title>dune-typetree: exceptions.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,191 +71,40 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#typedef-members\">Typedefs</a> |\n-<a href=\"#enum-members\">Enumerations</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">treepath.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">exceptions.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <cstddef></code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <iostream></code><br />\n-<code>#include <type_traits></code><br />\n-<code>#include <dune/common/documentation.hh></code><br />\n-<code>#include <dune/common/version.hh></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <dune/common/indices.hh></code><br />\n-<code>#include <dune/common/hybridutilities.hh></code><br />\n-<code>#include <dune/common/typelist.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n+\n+<p>TypeTree-specific exceptions. \n+<a href=\"#details\">More...</a></p>\n+<div class=\"textblock\"><code>#include <dune/common/exceptions.hh></code><br />\n </div>\n <p><a href=\"a00041_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01392.html\">Dune::TypeTree::HybridTreePath< T ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">A hybrid version of TreePath that supports both compile time and run time indices. <a href=\"a01392.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01428.html\">Dune::TypeTree::TreePathSize< HybridTreePath< index_constant< i >... > ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01432.html\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01436.html\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01440.html\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< k > > ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01444.html\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01448.html\">Dune::TypeTree::TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01452.html\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< k > >, i... ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01456.html\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... >, i... ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01460.html\">Dune::TypeTree::TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01464.html\">Dune::TypeTree::TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01088.html\">Dune::TypeTree::Exception</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for all <a class=\"el\" href=\"a00097.html\">TypeTree</a> exceptions. <a href=\"a01088.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00105\" id=\"r_a00105\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00105.html\">Dune::TypeTree::TreePathType</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00106\" id=\"r_a00106\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00106.html\">Dune::TypeTree::Literals</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:ga5777c11461f29c81c8d2440ed36dca12\" id=\"r_ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t... i> </td></tr>\n-<tr class=\"memitem:ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga5777c11461f29c81c8d2440ed36dca12\">Dune::TypeTree::StaticTreePath</a> = <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Dune::index_constant< i >... ></td></tr>\n-<tr class=\"separator:ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n-Enumerations</h2></td></tr>\n-<tr class=\"memitem:a2c22745f087ef4029052be4816e093ce\" id=\"r_a2c22745f087ef4029052be4816e093ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a> { <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a>\n-, <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a>\n- }</td></tr>\n-<tr class=\"separator:a2c22745f087ef4029052be4816e093ce\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:gaeb32e41118574398d079d0a22a5e1f80\" id=\"r_gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t... i> </td></tr>\n-<tr class=\"memitem:gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">Dune::TypeTree::print_tree_path</a> (std::ostream &os)</td></tr>\n-<tr class=\"separator:gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaa3668be2162ed006dbd170855d7ef042\" id=\"r_gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t k, std::size_t... i> </td></tr>\n-<tr class=\"memitem:gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaa3668be2162ed006dbd170855d7ef042\">Dune::TypeTree::print_tree_path</a> (std::ostream &os)</td></tr>\n-<tr class=\"separator:gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga98d8d975809eff411fe578ac9e3e4b0e\" id=\"r_ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">Dune::TypeTree::makeTreePath</a> (const T... t)</td></tr>\n-<tr class=\"memdesc:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">helper function to construct a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n-<tr class=\"separator:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga8d8adb5b68d9a6e529f363a10e7207d7\" id=\"r_ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a> (const T &... t)</td></tr>\n-<tr class=\"memdesc:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Constructs a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n-<tr class=\"separator:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaedb504d472c078d66791c42b190f41f2\" id=\"r_gaedb504d472c078d66791c42b190f41f2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:gaedb504d472c078d66791c42b190f41f2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a> (const T &... t)</td></tr>\n-<tr class=\"memdesc:gaedb504d472c078d66791c42b190f41f2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Constructs a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n-<tr class=\"separator:gaedb504d472c078d66791c42b190f41f2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga15a231b783d71e9daa350133a71b2b53\" id=\"r_ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &)</td></tr>\n-<tr class=\"memdesc:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the size (number of components) of the given <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga6e3abac9bca53b1cf72a5a0354b36908\" id=\"r_ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n-<tr class=\"memitem:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">Dune::TypeTree::treePathEntry</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type</td></tr>\n-<tr class=\"memdesc:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the i-th element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga93fde33df04c0302b1efa4363b4741ab\" id=\"r_ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n-<tr class=\"memitem:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">Dune::TypeTree::treePathIndex</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i >={})</td></tr>\n-<tr class=\"memdesc:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the index value of the i-th element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga1af1e09047ae8efddd455c81caed2037\" id=\"r_ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">Dune::TypeTree::back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp) -> decltype(tp.back())</td></tr>\n-<tr class=\"memdesc:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the last element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\" id=\"r_gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">Dune::TypeTree::front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp) -> decltype(tp.front())</td></tr>\n-<tr class=\"memdesc:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the first element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga05adc4d23920567c855e19dc2eb59fc3\" id=\"r_ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T..., std::size_t > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, std::size_t i)</td></tr>\n-<tr class=\"memdesc:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Appends a run time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaeaae64b785d097153f72ae54f6bac29d\" id=\"r_gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n-<tr class=\"memitem:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T..., index_constant< i > > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaeaae64b785d097153f72ae54f6bac29d\">Dune::TypeTree::push_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i > i_={})</td></tr>\n-<tr class=\"memdesc:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Appends a compile time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga27078c4dcd99d39e43051584e848544c\" id=\"r_ga27078c4dcd99d39e43051584e848544c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga27078c4dcd99d39e43051584e848544c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::size_t, T... > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">Dune::TypeTree::push_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, std::size_t element)</td></tr>\n-<tr class=\"memdesc:ga27078c4dcd99d39e43051584e848544c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Prepends a run time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga27078c4dcd99d39e43051584e848544c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gaf2f1759e1b0441530258893e71058f80\" id=\"r_gaf2f1759e1b0441530258893e71058f80\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n-<tr class=\"memitem:gaf2f1759e1b0441530258893e71058f80\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >, T... > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaf2f1759e1b0441530258893e71058f80\">Dune::TypeTree::push_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i > _i={})</td></tr>\n-<tr class=\"memdesc:gaf2f1759e1b0441530258893e71058f80\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Prepends a compile time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:gaf2f1759e1b0441530258893e71058f80\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga54aa7748c17aebfe9407b1a521ea23bd\" id=\"r_ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memTemplParams\" colspan=\"2\">template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n-<tr class=\"memitem:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">Dune::TypeTree::accumulate_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, I i)</td></tr>\n-<tr class=\"memdesc:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid utility that accumulates to the back of a multi-index. <br /></td></tr>\n-<tr class=\"separator:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga288cd3cb18c505ee0a051bc15e07ae0e\" id=\"r_ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n-<tr class=\"memitem:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">Dune::TypeTree::accumulate_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, I i)</td></tr>\n-<tr class=\"memdesc:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid utility that accumulates to the front of a multi-index. <br /></td></tr>\n-<tr class=\"separator:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga5e98f9dd480e4315e6cff83a60a632b2\" id=\"r_ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memTemplParams\" colspan=\"2\">template<class... Head, class... Other> </td></tr>\n-<tr class=\"memitem:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">Dune::TypeTree::join</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Head... > &head, const Other &... tail)</td></tr>\n-<tr class=\"memdesc:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Join two tree paths into one. <br /></td></tr>\n-<tr class=\"separator:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga44d8621606023f6da4c1ab2437a43a57\" id=\"r_ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T> </td></tr>\n-<tr class=\"memitem:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">Dune::TypeTree::reverse</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n-<tr class=\"memdesc:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Reverses the order of the elements in the path. <br /></td></tr>\n-<tr class=\"separator:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga376f28e2bba04847cf4469bf3a3e4752\" id=\"r_ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n-<tr class=\"memitem:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">Dune::TypeTree::pop_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n-<tr class=\"memdesc:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Removes first index on a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga712c4c506180db38ab8509f3485985bb\" id=\"r_ga712c4c506180db38ab8509f3485985bb\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n-<tr class=\"memitem:ga712c4c506180db38ab8509f3485985bb\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">Dune::TypeTree::pop_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n-<tr class=\"memdesc:ga712c4c506180db38ab8509f3485985bb\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Removes last index on a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n-<tr class=\"separator:ga712c4c506180db38ab8509f3485985bb\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gabce842333ec51e0fd07d5c7fef49a0ce\" id=\"r_gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memTemplParams\" colspan=\"2\">template<class... S, class... T> </td></tr>\n-<tr class=\"memitem:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr bool </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">Dune::TypeTree::operator==</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< S... > &lhs, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &rhs)</td></tr>\n-<tr class=\"memdesc:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for value equality. <br /></td></tr>\n-<tr class=\"separator:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gad7554606efd2f9ee3c2826bdb0587e2e\" id=\"r_gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memTemplParams\" colspan=\"2\">template<class S , S... lhs, class T , T... rhs> </td></tr>\n-<tr class=\"memitem:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gad7554606efd2f9ee3c2826bdb0587e2e\">Dune::TypeTree::operator==</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< S, lhs >... > &, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< T, rhs >... > &)</td></tr>\n-<tr class=\"memdesc:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Overload for purely static <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s. <br /></td></tr>\n-<tr class=\"separator:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga74a9deebbb4fc0f487d0e868494b374e\" id=\"r_ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memTemplParams\" colspan=\"2\">template<class... S, class... T> </td></tr>\n-<tr class=\"memitem:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">Dune::TypeTree::operator!=</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< S... > &lhs, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &rhs)</td></tr>\n-<tr class=\"memdesc:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for unequality. <br /></td></tr>\n-<tr class=\"separator:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga53f7302dc849c8790a69e33c8c45b134\" id=\"r_ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memTemplParams\" colspan=\"2\">template<class S , S... lhs, class T , T... rhs> </td></tr>\n-<tr class=\"memitem:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga53f7302dc849c8790a69e33c8c45b134\">Dune::TypeTree::operator!=</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< S, lhs >... > &, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< T, rhs >... > &)</td></tr>\n-<tr class=\"memdesc:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two static <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for unequality. <br /></td></tr>\n-<tr class=\"separator:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:af563e3ba39cae1b29145da1b28bc408e\" id=\"r_af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memTemplParams\" colspan=\"2\">template<char... digits> </td></tr>\n-<tr class=\"memitem:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00106.html#af563e3ba39cae1b29145da1b28bc408e\">Dune::TypeTree::Literals::operator""_tp</a> ()</td></tr>\n-<tr class=\"memdesc:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Literal to create treepath. <br /></td></tr>\n-<tr class=\"separator:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga0c1ac60b62c3a74db546b04368f319a2\" id=\"r_ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n-<tr class=\"memitem:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">std::ostream & </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">Dune::TypeTree::operator<<</a> (std::ostream &os, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n-<tr class=\"memdesc:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Dumps a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> to a stream. <br /></td></tr>\n-<tr class=\"separator:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n-</div><!-- contents -->\n+<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n+<div class=\"textblock\"><p>TypeTree-specific exceptions. </p>\n+</div></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,242 +1,24 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-treepath.hh File Reference\n-#include <cstddef>\n-#include <cassert>\n-#include <iostream>\n-#include <type_traits>\n-#include <dune/common/documentation.hh>\n-#include <dune/common/version.hh>\n-#include <dune/common/typetraits.hh>\n-#include <dune/common/indices.hh>\n-#include <dune/common/hybridutilities.hh>\n-#include <dune/common/typelist.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+exceptions.hh File Reference\n+TypeTree-specific exceptions. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <dune/common/exceptions.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bT_\b _\b>\n-\u00a0 A hybrid version of TreePath that supports both compile time and run\n- time indices. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>\n- _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi\n- _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi\n- _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bj_\b _\b>_\b,\n- _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bl_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n- _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>\n- _\b>_\b,_\b _\bi_\b._\b._\b._\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bj_\b _\b>_\b,\n- _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bl_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bi_\b._\b._\b._\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n- _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b.\n- _\b>_\b,_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+\u00a0 Base class for all _\bT_\by_\bp_\be_\bT_\br_\be_\be exceptions. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\bi_\bt_\be_\br_\ba_\bl_\bs\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template<std::size_t... i>\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< Dune::index_constant< i\n- >... >\n-\u00a0\n-E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n-enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:\n- _\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc , _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc }\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<std::size_t... i>\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh (std::\n- ostream &os)\n-\u00a0\n-template<std::size_t k, std::size_t... i>\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh (std::\n- ostream &os)\n-\u00a0\n-template<typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T...\n- t)\n-\u00a0 helper function to construct a new\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the given indices.\n-\u00a0\n-template<typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T\n- &... t)\n-\u00a0 Constructs a new _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the\n- given indices.\n-\u00a0\n-template<typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh (const T &...\n- t)\n-\u00a0 Constructs a new _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the\n- given indices.\n-\u00a0\n-template<typename... T>\n- constexpr std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &)\n-\u00a0 Returns the size (number of components)\n- of the given _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<std::size_t i, typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n- index_constant< i >={}) -> typename\n- std::decay< decltype(std::get< i >\n- (tp._data))>::type\n-\u00a0 Returns a copy of the i-th element of\n- the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<std::size_t i, typename... T>\n- constexpr std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n- index_constant< i >={})\n-\u00a0 Returns the index value of the i-th\n- element of the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bb_\ba_\bc_\bk (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp) -> decltype\n- (tp.back())\n-\u00a0 Returns a copy of the last element of\n- the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<typename... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp) -> decltype\n- (tp.front())\n-\u00a0 Returns a copy of the first element of\n- the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<typename... T>\n- constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T..., std:: _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk (const\n- size_t >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, std::size_t\n- i)\n-\u00a0 Appends a run time index to a\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<std::size_t i, typename... T>\n- constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T..., _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk (const\n- index_constant< i > >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n- index_constant< i > i_={})\n-\u00a0 Appends a compile time index to a\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<typename... T>\n-constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::size_t, _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt (const\n- T... >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, std::size_t\n- element)\n-\u00a0 Prepends a run time index to a\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<std::size_t i, typename... T>\n- constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt (const\n- index_constant< i >, T... >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n- index_constant< i > _i={})\n-\u00a0 Prepends a compile time index to a\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool\n-> = true>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, I i)\n-\u00a0 Hybrid utility that accumulates to the\n- back of a multi-index.\n-\u00a0\n-template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool\n-> = true>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, I i)\n-\u00a0 Hybrid utility that accumulates to the\n- front of a multi-index.\n-\u00a0\n-template<class... Head, class... Other>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bj_\bo_\bi_\bn (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< Head... > &head, const\n- Other &... tail)\n-\u00a0 Join two tree paths into one.\n-\u00a0\n-template<class... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bv_\be_\br_\bs_\be (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n-\u00a0 Reverses the order of the elements in\n- the path.\n-\u00a0\n-template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n-\u00a0 Removes first index on a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n-\u00a0 Removes last index on a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n-\u00a0\n-template<class... S, class... T>\n- constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< S... > &lhs, const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &rhs)\n-\u00a0 Compare two _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for value\n- equality.\n-\u00a0\n-template<class S , S... lhs, class T , T... rhs>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::integral_constant<\n- S, lhs >... > &, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n- std::integral_constant< T, rhs >... > &)\n-\u00a0 Overload for purely static\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs.\n-\u00a0\n-template<class... S, class... T>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b= (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< S... > &lhs, const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &rhs)\n-\u00a0 Compare two _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for\n- unequality.\n-\u00a0\n-template<class S , S... lhs, class T , T... rhs>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b= (const\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::integral_constant<\n- S, lhs >... > &, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n- std::integral_constant< T, rhs >... > &)\n-\u00a0 Compare two static _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for\n- unequality.\n-\u00a0\n-template<char... digits>\n- constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\bi_\bt_\be_\br_\ba_\bl_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b\"_\b\"_\b__\bt_\bp\n- ()\n-\u00a0 Literal to create treepath.\n-\u00a0\n-template<typename... T>\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream\n- &os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n-\u00a0 Dumps a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh to a stream.\n-\u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+TypeTree-specific exceptions.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00041_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00041_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: treepath.hh Source File</title>\n+<title>dune-typetree: exceptions.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,734 +74,41 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">treepath.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">exceptions.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<a href=\"a00041.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n+<a href=\"a00041.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n-<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TREEPATH_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TREEPATH_HH</span></div>\n-<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <iostream></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/version.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <dune/common/typelist.hh></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00023.html\">dune/typetree/fixedcapacitystack.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"comment\">// The Impl namespace collects some free standing functions helper functions</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">namespace </span>Impl {</div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">struct </span>check_size_t_impl</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check() {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"keywordflow\">return</span> std::is_same_v<T, std::size_t>;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> }</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> };</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, T v></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">struct </span>check_size_t_impl<std::integral_constant<T,v>></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check() {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keywordflow\">return</span> std::is_same_v<T, std::size_t>;</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> }</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> };</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check_size_t() {</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> check_size_t_impl<T>::check();</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> }</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> cast_size_t(<span class=\"keyword\">const</span> T & v) {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"comment\">// check that T is an integral type that can be cast to std::size_t</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">static_assert</span>(</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> std::is_convertible_v<T,std::size_t> &&</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> std::is_integral_v<T>,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"comment\">// positivity can only be checked at run-time</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> assert(v >= 0 &&</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> <span class=\"keywordflow\">return</span> std::size_t(v);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> }</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, T v></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> cast_size_t(std::integral_constant<T,v>) {</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"comment\">// check that T is an intergal type that can be cast to std::size_t</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> <span class=\"comment\">// and that v is positive</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">static_assert</span>(</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> std::is_convertible_v<T,std::size_t> &&</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> std::is_integral_v<T> &&</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> v >= 0,</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,v>();</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> }</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"comment\">// these are helper functions that help triggering a deprecation warning</span></div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> [[deprecated(<span class=\"stringliteral\">"HybridTreePath index storage should be std::size_t or std::integral_constant<std::size_t,v>!\\n"</span></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"stringliteral\">"Using anything else is deprecated and will not possible after the 2.10 release.\\n"</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"stringliteral\">"It is adviced not to specify the template parameters expicitly,\\n"</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"stringliteral\">"but to use the helper functions `hybridTreePath` or `treePath`."</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"stringliteral\">"These take care of converting indices to the appropriate storage."</span>)]]</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<T>) {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"comment\">// specialization of valid index type</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> v></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<std::integral_constant<std::size_t,v>>) {</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> }</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">// specialization of valid index type</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<std::size_t>) {</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> }</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keyword\">class </span>HybridTreePath;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00105.html\"> 105</a></span> <span class=\"keyword\">namespace </span>TreePathType {</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"> 106</a></span> <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Type</a> { <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">fullyStatic</a>, <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">dynamic</a> };</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01396.html\"> 110</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01396.html\">TreePathSize</a>;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01400.html\"> 113</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01400.html\">TreePathPushBack</a>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01404.html\"> 116</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01404.html\">TreePathPushFront</a>;</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01408.html\"> 119</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a>;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01412.html\"> 122</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01412.html\">TreePathFront</a>;</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>, std::size_t...></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01416.html\"> 125</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a>;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01420.html\"> 128</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01420.html\">TreePathPopFront</a>;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>, <span class=\"keyword\">typename</span>></div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01424.html\"> 131</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01424.html\">TreePathConcat</a>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\"> 134</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a>(std::ostream& os)</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00138\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaa3668be2162ed006dbd170855d7ef042\"> 138</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a>(std::ostream& os)</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> os << k << <span class=\"stringliteral\">" "</span>;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a><i...>(os);</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html\"> 157</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a></div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> {</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"comment\">// enable check for dune-typetree 2.10 and above</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span><span class=\"preprocessor\">#if DUNE_VERSION_GTE(TYPETREE,2,10)</span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// make sure that all indices use std::size_t as the underlying number type</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">static_assert</span>((... && Impl::check_size_t<T>()),</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"stringliteral\">"HybridTreePath index storage must be std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\"> 170</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">index_sequence</a> = std::index_sequence_for<T...>;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\"> 173</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\">HybridTreePath</a>()</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> {</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\"> 179</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\">HybridTreePath</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& tp) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\"> 180</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\">HybridTreePath</a>(<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>&& tp) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> </div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\"> 182</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& <a class=\"code hl_function\" href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\">operator=</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& tp) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\"> 183</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& <a class=\"code hl_function\" href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\">operator=</a>(<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>&& tp) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\"> 186</a></span> <span class=\"keyword\">explicit</span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\">HybridTreePath</a>(std::tuple<T...> t)</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> : _data(t)</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... U,</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> <span class=\"keyword\">typename</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0 && <span class=\"keyword\">sizeof</span>...(U) == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\"> 196</a></span> <span class=\"keyword\">explicit</span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\">HybridTreePath</a>(U... t)</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> : _data(t...) <span class=\"comment\">// we assume that all arguments are convertible to the types T...</span></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00204\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\"> 204</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">index_sequence</a> <a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>()</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keywordflow\">return</span> {};</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00210\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\"> 210</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">size</a>()</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> {</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">sizeof</span>...(T);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\"> 216</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\">max_size</a>()</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> <span class=\"keyword\">template</span><std::size_t i,</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > i),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a67c75f087c001270585425859f06bcdc\"> 224</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a67c75f087c001270585425859f06bcdc\">operator[]</a>(Dune::index_constant<i>)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> <span class=\"keywordflow\">return</span> std::get<i>(_data);</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00230\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\"> 230</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\">operator[]</a>(std::size_t pos)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> std::size_t entry = 0;</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> Dune::Hybrid::forEach(<a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>(), [&] (<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keywordflow\">if</span> (i==pos)</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> entry = this-><a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(i);</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> });</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keywordflow\">return</span> entry;</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <span class=\"keyword\">template</span><std::size_t i,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > i),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00243\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\"> 243</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(Dune::index_constant<i> pos = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> {</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> <span class=\"keywordflow\">return</span> std::get<i>(_data);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\"> 249</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\">element</a>(std::size_t pos)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> std::size_t entry = 0;</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> Dune::Hybrid::forEach(<a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>(), [&] (<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keywordflow\">if</span> (i==pos)</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> entry = this-><a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(i);</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> });</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keywordflow\">return</span> entry;</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><std::size_t n = <span class=\"keyword\">sizeof</span>...(T),</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> std::enable_if_t<(n > 0 && n == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00262\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\"> 262</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>() <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> {</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"keywordflow\">return</span> std::get<0>(_data);</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><std::size_t n = <span class=\"keyword\">sizeof</span>...(T),</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> std::enable_if_t<(n > 0 && n == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00270\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\"> 270</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>() <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> {</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keywordflow\">return</span> std::get<n-1>(_data);</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> <span class=\"comment\">// I can't be bothered to make all the external accessors friends of HybridTreePath,</span></div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">// so we'll only hide the data tuple from the user in Doxygen.</span></div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"keyword\">using </span>Data = std::tuple<T...>;</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> Data _data;</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00295\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\"> 295</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(<span class=\"keyword\">const</span> T... t)</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> {</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> <span class=\"comment\">// check that all entries are based on std::size_t</span></div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">static_assert</span>((... && Impl::check_size_t<T>()),</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"stringliteral\">"HybridTreePath indices must be of type std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...>(t...);</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> </div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\"> 312</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(<span class=\"keyword\">const</span> T&... t)</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> {</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(Impl::cast_size_t(t)...);</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\"> 326</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(<span class=\"keyword\">const</span> T&... t)</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> {</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(Impl::cast_size_t(t)...);</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> </div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\"> 334</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>&)</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> {</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">sizeof</span>...(T);</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> </div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> </div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00357\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\"> 357</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">treePathEntry</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> -> <span class=\"keyword\">typename</span> std::decay<<span class=\"keyword\">decltype</span>(std::get<i>(tp._data))>::type</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> {</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"keywordflow\">return</span> std::get<i>(tp._data);</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> </div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> <span class=\"keyword\">template</span><std::size_t i,<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00380\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\"> 380</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">treePathIndex</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> = {})</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> {</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> <span class=\"keywordflow\">return</span> std::get<i>(tp._data);</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> </div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> </div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\"> 392</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> -> <span class=\"keyword\">decltype</span>(tp.<a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>())</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> {</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> <span class=\"keywordflow\">return</span> tp.<a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>();</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> </div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00405\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"> 405</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> -> <span class=\"keyword\">decltype</span>(tp.<a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>())</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> {</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> <span class=\"keywordflow\">return</span> tp.<a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>();</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\"> 410</span> </div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> </div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00416\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\"> 416</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,std::size_t> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> {</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,std::size_t>(std::tuple_cat(tp._data,std::make_tuple(i)));</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> </div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> </div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00437\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaeaae64b785d097153f72ae54f6bac29d\"> 437</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,index_constant<i>> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> i_ = {})</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> {</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> <span class=\"keywordflow\">return</span> HybridTreePath<T...,index_constant<i> >(std::tuple_cat(tp._data,std::make_tuple(i_)));</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> </div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> </div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00447\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\"> 447</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::size_t,T...> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, std::size_t element)</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> {</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::size_t,T...>(std::tuple_cat(std::make_tuple(element),tp._data));</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> </div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> </div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaf2f1759e1b0441530258893e71058f80\"> 468</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>,T...> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> _i = {})</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> {</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"keywordflow\">return</span> HybridTreePath<index_constant<i>,T...>(std::tuple_cat(std::make_tuple(_i),tp._data));</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> </div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> </div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I, <span class=\"keyword\">typename</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00486\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\"> 486</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">accumulate_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, I i) {</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> using ::Dune::Hybrid::plus;</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">pop_back</a>(tp), <a class=\"code hl_struct\" href=\"a00940.html\">plus</a>(<a class=\"code hl_function\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">back</a>(tp), i));</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> </div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"> 491</span> </div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> </div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I, <span class=\"keyword\">typename</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00505\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\"> 505</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">accumulate_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, I i) {</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> using ::Dune::Hybrid::plus;</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<a class=\"code hl_function\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">pop_front</a>(tp), <a class=\"code hl_struct\" href=\"a00940.html\">plus</a>(<a class=\"code hl_function\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">front</a>(tp), i));</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"> 508</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> </div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... Head, <span class=\"keyword\">class</span>... Other></div>\n-<div class=\"foldopen\" id=\"foldopen00512\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\"> 512</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">join</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Head...></a>& head, <span class=\"keyword\">const</span> Other&... tail) {</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\"> 513</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">TypeTree::HybridTreePath</a>{std::tuple_cat(head._data, tail._data...)};</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> </div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00518\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\"> 518</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">reverse</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp) {</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> <span class=\"keyword\">constexpr</span> std::size_t size = <span class=\"keyword\">sizeof</span>...(T);</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(tp[index_constant<size-i-1>{}] ...);</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> }, std::make_index_sequence<size>{});</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"> 524</span> </div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> </div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00530\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\"> 530</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">pop_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"> 531</span> {</div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"> 532</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"> 533</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>{std::make_tuple(std::get<i+1>(tp._data)...)};</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"> 534</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(T) - 1)>{});</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"> 535</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> </div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"> 541</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00542\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\"> 542</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">pop_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> {</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\"> 545</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>{std::make_tuple(std::get<i>(tp._data)...)};</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(T) - 1)>{});</div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\"> 547</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"> 548</span> </div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\"> 550</span> </div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\"> 558</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... S, <span class=\"keyword\">class</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00559\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\"> 559</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">operator==</a>(</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"> 560</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<S...></a>& lhs,</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"> 561</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& rhs)</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"> 562</span> {</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\"> 563</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (<span class=\"keyword\">sizeof</span>...(S) == <span class=\"keyword\">sizeof</span>...(T)) {</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\"> 564</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> ((Dune::IsInteroperable<S,T>::value &&...)) {</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"> 565</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"> 566</span> <span class=\"keywordflow\">return</span> ((std::get<i>(lhs._data) == std::get<i>(rhs._data)) &&...);</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\"> 567</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(S))>{});</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\"> 568</span> } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\"> 569</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"> 570</span> }</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\"> 571</span> } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\"> 572</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"> 573</span> }</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"> 574</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"> 575</span> </div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> </div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>S, S... lhs, <span class=\"keyword\">class </span>T, T... rhs></div>\n-<div class=\"foldopen\" id=\"foldopen00583\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gad7554606efd2f9ee3c2826bdb0587e2e\"> 583</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">operator==</a>(</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\"> 584</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<S,lhs>...>&,</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"> 585</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<T,rhs>...>&)</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\"> 586</span> {</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> <span class=\"keywordflow\">return</span> std::bool_constant<<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(lhs...) == <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(rhs...)>{};</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> </div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> </div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... S, <span class=\"keyword\">class</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00593\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\"> 593</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">operator!=</a>(</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<S...></a>& lhs,</div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& rhs)</div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> {</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> <span class=\"keywordflow\">return</span> !(lhs == rhs);</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> </div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>S, S... lhs, <span class=\"keyword\">class </span>T, T... rhs></div>\n-<div class=\"foldopen\" id=\"foldopen00602\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga53f7302dc849c8790a69e33c8c45b134\"> 602</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">operator!=</a>(</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<S,lhs>...>&,</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<T,rhs>...>&)</div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> {</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\"> 606</span> <span class=\"keywordflow\">return</span> std::bool_constant<<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(lhs...) != <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(rhs...)>{};</div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"> 607</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\"> 608</span> </div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\"> 609</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00610\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00106.html\"> 610</a></span> <span class=\"keyword\">inline</span> <span class=\"keyword\">namespace </span>Literals {</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\"> 611</span> </div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\"> 613</span> </div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span> <span class=\"keyword\">template</span> <<span class=\"keywordtype\">char</span>... digits></div>\n-<div class=\"foldopen\" id=\"foldopen00618\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00106.html#af563e3ba39cae1b29145da1b28bc408e\"> 618</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <span class=\"keyword\">operator</span><span class=\"stringliteral\">""</span> _tp()</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\"> 619</span> {</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> <span class=\"keyword\">using namespace </span>Dune::Indices::Literals;</div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"> 621</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(<span class=\"keyword\">operator</span><span class=\"stringliteral\">""</span>_ic<digits...>());</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\"> 622</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\"> 623</span> </div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\"> 624</span> } <span class=\"comment\">// end namespace Literals</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\"> 625</span> </div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\"> 626</span> </div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00628\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01428.html\"> 628</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01396.html\">TreePathSize</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...> ></div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\"> 629</span> : <span class=\"keyword\">public</span> index_constant<sizeof...(i)></div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> </div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> </div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00634\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01432.html\"> 634</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01400.html\">TreePathPushBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,k></div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> {</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\"> 636</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...,index_constant<k>> <a class=\"code hl_typedef\" href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\"> 637</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> </div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00640\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01436.html\"> 640</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01404.html\">TreePathPushFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,k></div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\"> 641</span> {</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\"> 642</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<k></a>,index_constant<i>...> <a class=\"code hl_typedef\" href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\"> 643</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\"> 644</span> </div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\"> 645</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00646\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01440.html\"> 646</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>>></div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\"> 647</span> : <span class=\"keyword\">public</span> index_constant<k></div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"> 648</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span> </div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"> 650</span> <span class=\"keyword\">template</span><std::size_t j, std::size_t k, std::size_t... l></div>\n-<div class=\"foldopen\" id=\"foldopen00651\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01444.html\"> 651</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<j>,index_constant<k>,index_constant<l>...>></div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\"> 652</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><HybridTreePath<index_constant<k>,index_constant<l>...>></div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\"> 653</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\"> 654</span> </div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\"> 655</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00656\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01448.html\"> 656</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01412.html\">TreePathFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>,index_constant<i>...>></div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\"> 657</span> : <span class=\"keyword\">public</span> index_constant<k></div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> </div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\"> 660</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00661\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01452.html\"> 661</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>>,i...></div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\"> 662</span> {</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\"> 663</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...> <a class=\"code hl_typedef\" href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\"> 664</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\"> 665</span> </div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> <span class=\"keyword\">template</span><std::size_t j,</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> std::size_t k,</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> std::size_t... l,</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00670\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01456.html\"> 670</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<j>,index_constant<k>,index_constant<l>...>,i...></div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><HybridTreePath<index_constant<k>,index_constant<l>...>,i...,j></div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\"> 672</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\"> 673</span> </div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"> 674</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n-<div class=\"foldopen\" id=\"foldopen00675\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01460.html\"> 675</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01420.html\">TreePathPopFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>,index_constant<i>...> ></div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\"> 676</span> {</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\"> 677</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...> <a class=\"code hl_typedef\" href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\"> 678</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\"> 679</span> </div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\"> 680</span> <span class=\"keyword\">template</span><std::size_t... i, std::size_t... k></div>\n-<div class=\"foldopen\" id=\"foldopen00681\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01464.html\"> 681</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01424.html\">TreePathConcat</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>...> ></div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\"> 682</span> {</div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\"> 683</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...,index_constant<k>...> <a class=\"code hl_typedef\" href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\"> 684</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\"> 685</span> </div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\"> 686</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\"> 687</span> </div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\"> 688</span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\"> 689</span> </div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"> 690</span> <span class=\"comment\">// end of recursion</span></div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\"> 691</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\"> 692</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\"> 693</span> (i == <span class=\"keyword\">sizeof</span>...(T))</div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\"> 694</span> >::type</div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\"> 695</span> print_hybrid_tree_path(std::ostream& os, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> _i)</div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\"> 696</span> {}</div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\"> 697</span> </div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\"> 698</span> <span class=\"comment\">// print current entry and recurse</span></div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\"> 699</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\"> 700</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\"> 701</span> (i < <span class=\"keyword\">sizeof</span>...(T))</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\"> 702</span> >::type</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\"> 703</span> print_hybrid_tree_path(std::ostream& os, <span class=\"keyword\">const</span> HybridTreePath<T...>& tp, index_constant<i> _i)</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\"> 704</span> {</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"> 705</span> os << <a class=\"code hl_function\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">treePathIndex</a>(tp,_i) << <span class=\"stringliteral\">" "</span>;</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"> 706</span> print_hybrid_tree_path(os,tp,index_constant<i+1>{});</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> }</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\"> 708</span> </div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> } <span class=\"comment\">// namespace impl</span></div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\"> 710</span> </div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\"> 711</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\"> 712</span> </div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\"> 714</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00715\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\"> 715</a></span> std::ostream& <a class=\"code hl_function\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">operator<<</a>(std::ostream& os, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"> 716</span> {</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\"> 717</span> os << <span class=\"stringliteral\">"HybridTreePath< "</span>;</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\"> 718</span> impl::print_hybrid_tree_path(os, tp, index_constant<0>{});</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\"> 719</span> os << <span class=\"stringliteral\">">"</span>;</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\"> 720</span> <span class=\"keywordflow\">return</span> os;</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\"> 721</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\"> 722</span> </div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\"> 723</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga5777c11461f29c81c8d2440ed36dca12\"> 724</a></span> <span class=\"keyword\">using </span><a class=\"code hl_class\" href=\"a01392.html\">StaticTreePath</a> = <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Dune::index_constant<i></a>...>;</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\"> 725</span> </div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\"> 727</span> </div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\"> 728</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\"> 729</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\"> 730</span> </div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\"> 731</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TREEPATH_HH</span></div>\n-<div class=\"ttc\" id=\"aa00023_html\"><div class=\"ttname\"><a href=\"a00023.html\">fixedcapacitystack.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga0c1ac60b62c3a74db546b04368f319a2\"><div class=\"ttname\"><a href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">Dune::TypeTree::operator<<</a></div><div class=\"ttdeci\">std::ostream & operator<<(std::ostream &os, const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Dumps a HybridTreePath to a stream.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:715</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga1af1e09047ae8efddd455c81caed2037\"><div class=\"ttname\"><a href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">Dune::TypeTree::back</a></div><div class=\"ttdeci\">constexpr auto back(const HybridTreePath< T... > &tp) -> decltype(tp.back())</div><div class=\"ttdoc\">Returns a copy of the last element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:392</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga27078c4dcd99d39e43051584e848544c\"><div class=\"ttname\"><a href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">Dune::TypeTree::push_front</a></div><div class=\"ttdeci\">constexpr HybridTreePath< std::size_t, T... > push_front(const HybridTreePath< T... > &tp, std::size_t element)</div><div class=\"ttdoc\">Prepends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:447</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga288cd3cb18c505ee0a051bc15e07ae0e\"><div class=\"ttname\"><a href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">Dune::TypeTree::accumulate_front</a></div><div class=\"ttdeci\">constexpr auto accumulate_front(const HybridTreePath< T... > &tp, I i)</div><div class=\"ttdoc\">Hybrid utility that accumulates to the front of a multi-index.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:505</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga376f28e2bba04847cf4469bf3a3e4752\"><div class=\"ttname\"><a href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">Dune::TypeTree::pop_front</a></div><div class=\"ttdeci\">constexpr auto pop_front(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Removes first index on a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:530</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga44d8621606023f6da4c1ab2437a43a57\"><div class=\"ttname\"><a href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">Dune::TypeTree::reverse</a></div><div class=\"ttdeci\">constexpr auto reverse(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Reverses the order of the elements in the path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:518</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga54aa7748c17aebfe9407b1a521ea23bd\"><div class=\"ttname\"><a href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">Dune::TypeTree::accumulate_back</a></div><div class=\"ttdeci\">constexpr auto accumulate_back(const HybridTreePath< T... > &tp, I i)</div><div class=\"ttdoc\">Hybrid utility that accumulates to the back of a multi-index.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:486</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga5e98f9dd480e4315e6cff83a60a632b2\"><div class=\"ttname\"><a href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">Dune::TypeTree::join</a></div><div class=\"ttdeci\">constexpr auto join(const HybridTreePath< Head... > &head, const Other &... tail)</div><div class=\"ttdoc\">Join two tree paths into one.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:512</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga6e3abac9bca53b1cf72a5a0354b36908\"><div class=\"ttname\"><a href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">Dune::TypeTree::treePathEntry</a></div><div class=\"ttdeci\">constexpr auto treePathEntry(const HybridTreePath< T... > &tp, index_constant< i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type</div><div class=\"ttdoc\">Returns a copy of the i-th element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:357</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga712c4c506180db38ab8509f3485985bb\"><div class=\"ttname\"><a href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">Dune::TypeTree::pop_back</a></div><div class=\"ttdeci\">constexpr auto pop_back(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Removes last index on a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:542</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga74a9deebbb4fc0f487d0e868494b374e\"><div class=\"ttname\"><a href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">Dune::TypeTree::operator!=</a></div><div class=\"ttdeci\">constexpr auto operator!=(const HybridTreePath< S... > &lhs, const HybridTreePath< T... > &rhs)</div><div class=\"ttdoc\">Compare two HybridTreePaths for unequality.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:593</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga93fde33df04c0302b1efa4363b4741ab\"><div class=\"ttname\"><a href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">Dune::TypeTree::treePathIndex</a></div><div class=\"ttdeci\">constexpr std::size_t treePathIndex(const HybridTreePath< T... > &tp, index_constant< i >={})</div><div class=\"ttdoc\">Returns the index value of the i-th element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:380</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga98d8d975809eff411fe578ac9e3e4b0e\"><div class=\"ttname\"><a href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">Dune::TypeTree::makeTreePath</a></div><div class=\"ttdeci\">constexpr auto makeTreePath(const T... t)</div><div class=\"ttdoc\">helper function to construct a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:295</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gabce842333ec51e0fd07d5c7fef49a0ce\"><div class=\"ttname\"><a href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">Dune::TypeTree::operator==</a></div><div class=\"ttdeci\">constexpr bool operator==(const HybridTreePath< S... > &lhs, const HybridTreePath< T... > &rhs)</div><div class=\"ttdoc\">Compare two HybridTreePaths for value equality.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:559</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaeb32e41118574398d079d0a22a5e1f80\"><div class=\"ttname\"><a href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">Dune::TypeTree::print_tree_path</a></div><div class=\"ttdeci\">void print_tree_path(std::ostream &os)</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:134</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><div class=\"ttname\"><a href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">Dune::TypeTree::front</a></div><div class=\"ttdeci\">constexpr auto front(const HybridTreePath< T... > &tp) -> decltype(tp.front())</div><div class=\"ttdoc\">Returns a copy of the first element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:405</div></div>\n+<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#define DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span> </div>\n+<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span> </div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00019\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01088.html\"> 19</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01088.html\">Exception</a></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> : <span class=\"keyword\">public</span> Dune::Exception</div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span>} <span class=\"comment\">// namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a></div><div class=\"ttdeci\">@ fullyStatic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00940_html\"><div class=\"ttname\"><a href=\"a00940.html\">Dune::TypeTree::plus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using +.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a0b9b3687a09eafa07cbb87b04cc378b8\"><div class=\"ttname\"><a href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(HybridTreePath &&tp)=default</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a1f02aa4b46556df6171102cc1c484054\"><div class=\"ttname\"><a href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">Dune::TypeTree::HybridTreePath::back</a></div><div class=\"ttdeci\">constexpr auto back() const</div><div class=\"ttdoc\">Get the last index value. Only available in non-empty paths.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:270</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a246b0b6f95fd2bf301c70d3052de7d55\"><div class=\"ttname\"><a href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\">Dune::TypeTree::HybridTreePath::operator=</a></div><div class=\"ttdeci\">constexpr HybridTreePath & operator=(const HybridTreePath &tp)=default</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a28fdbb809d45ff47cc172bb566d4b993\"><div class=\"ttname\"><a href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\">Dune::TypeTree::HybridTreePath::element</a></div><div class=\"ttdeci\">constexpr std::size_t element(std::size_t pos) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:249</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a3062592769d0ba278f7574e8c7824623\"><div class=\"ttname\"><a href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(std::tuple< T... > t)</div><div class=\"ttdoc\">Constructor from a std::tuple</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:186</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a387399af83ab32d85b9a71fe4978852f\"><div class=\"ttname\"><a href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\">Dune::TypeTree::HybridTreePath::operator=</a></div><div class=\"ttdeci\">constexpr HybridTreePath & operator=(HybridTreePath &&tp)=default</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a483f1790095b9ff647d3a5b268ae222b\"><div class=\"ttname\"><a href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(U... t)</div><div class=\"ttdoc\">Constructor from arguments.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:196</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a48b3cb51dd054fde7e8731bcf33594c5\"><div class=\"ttname\"><a href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:173</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a56ab4d42099dcf6580da3b36ab111887\"><div class=\"ttname\"><a href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">Dune::TypeTree::HybridTreePath::element</a></div><div class=\"ttdeci\">constexpr auto element(Dune::index_constant< i > pos={}) const</div><div class=\"ttdoc\">Get the last index value.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:243</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a62f585a41d47228b10a074ec87f6cd69\"><div class=\"ttname\"><a href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">Dune::TypeTree::HybridTreePath::size</a></div><div class=\"ttdeci\">static constexpr std::size_t size()</div><div class=\"ttdoc\">Get the size (length) of this path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:210</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a67c75f087c001270585425859f06bcdc\"><div class=\"ttname\"><a href=\"a01392.html#a67c75f087c001270585425859f06bcdc\">Dune::TypeTree::HybridTreePath::operator[]</a></div><div class=\"ttdeci\">constexpr auto operator[](Dune::index_constant< i >) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:224</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a9472def425f9117d5ad5e7c5ea1ebde2\"><div class=\"ttname\"><a href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">Dune::TypeTree::HybridTreePath::front</a></div><div class=\"ttdeci\">constexpr auto front() const</div><div class=\"ttdoc\">Get the first index value. Only available in non-empty paths.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:262</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_a9a13c90fcc1a80b4a643b70ce7133296\"><div class=\"ttname\"><a href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">Dune::TypeTree::HybridTreePath::enumerate</a></div><div class=\"ttdeci\">static constexpr index_sequence enumerate()</div><div class=\"ttdoc\">Returns an index_sequence for enumerating the components of this HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:204</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_aa075c63ba91432ea1503889505c0971e\"><div class=\"ttname\"><a href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(const HybridTreePath &tp)=default</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_ac0eef58cfd736ae96cf148d244130844\"><div class=\"ttname\"><a href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\">Dune::TypeTree::HybridTreePath::operator[]</a></div><div class=\"ttdeci\">constexpr std::size_t operator[](std::size_t pos) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:230</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_af15c60b9e36cc5a8964014c6dd68cf84\"><div class=\"ttname\"><a href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\">Dune::TypeTree::HybridTreePath::max_size</a></div><div class=\"ttdeci\">static constexpr std::size_t max_size()</div><div class=\"ttdoc\">Get the size (length) of this path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:216</div></div>\n-<div class=\"ttc\" id=\"aa01392_html_afb240bc79a76c347343ff7ff4de81e7f\"><div class=\"ttname\"><a href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">Dune::TypeTree::HybridTreePath::index_sequence</a></div><div class=\"ttdeci\">std::index_sequence_for< T... > index_sequence</div><div class=\"ttdoc\">An index_sequence for the entries in this HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:170</div></div>\n-<div class=\"ttc\" id=\"aa01396_html\"><div class=\"ttname\"><a href=\"a01396.html\">Dune::TypeTree::TreePathSize</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:110</div></div>\n-<div class=\"ttc\" id=\"aa01400_html\"><div class=\"ttname\"><a href=\"a01400.html\">Dune::TypeTree::TreePathPushBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa01404_html\"><div class=\"ttname\"><a href=\"a01404.html\">Dune::TypeTree::TreePathPushFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:116</div></div>\n-<div class=\"ttc\" id=\"aa01408_html\"><div class=\"ttname\"><a href=\"a01408.html\">Dune::TypeTree::TreePathBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:119</div></div>\n-<div class=\"ttc\" id=\"aa01412_html\"><div class=\"ttname\"><a href=\"a01412.html\">Dune::TypeTree::TreePathFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:122</div></div>\n-<div class=\"ttc\" id=\"aa01416_html\"><div class=\"ttname\"><a href=\"a01416.html\">Dune::TypeTree::TreePathPopBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:125</div></div>\n-<div class=\"ttc\" id=\"aa01420_html\"><div class=\"ttname\"><a href=\"a01420.html\">Dune::TypeTree::TreePathPopFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa01424_html\"><div class=\"ttname\"><a href=\"a01424.html\">Dune::TypeTree::TreePathConcat</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:131</div></div>\n-<div class=\"ttc\" id=\"aa01432_html_aefbb54e742b2ca3f1950555744ac8164\"><div class=\"ttname\"><a href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >..., index_constant< k > > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:636</div></div>\n-<div class=\"ttc\" id=\"aa01436_html_a43ee9f962a011d8f93d3849c59370640\"><div class=\"ttname\"><a href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< k >, index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:642</div></div>\n-<div class=\"ttc\" id=\"aa01452_html_a152d8da9bd9d3d37a29fcb321baae6c2\"><div class=\"ttname\"><a href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< k > >, i... >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:663</div></div>\n-<div class=\"ttc\" id=\"aa01460_html_ab54b57efb5a8329a61818956bbc27a8a\"><div class=\"ttname\"><a href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\">Dune::TypeTree::TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:677</div></div>\n-<div class=\"ttc\" id=\"aa01464_html_ada5d2db63bce0172c5fd4ef8cea79c19\"><div class=\"ttname\"><a href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\">Dune::TypeTree::TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >..., index_constant< k >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:683</div></div>\n+<div class=\"ttc\" id=\"aa01088_html\"><div class=\"ttname\"><a href=\"a01088.html\">Dune::TypeTree::Exception</a></div><div class=\"ttdoc\">Base class for all TypeTree exceptions.</div><div class=\"ttdef\"><b>Definition</b> exceptions.hh:21</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,812 +1,37 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-treepath.hh\n+exceptions.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=8 sw=2 sts=2:\n+1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n-5\n-6#ifndef DUNE_TYPETREE_TREEPATH_HH\n-7#define DUNE_TYPETREE_TREEPATH_HH\n-8\n-9#include <cstddef>\n-10#include <cassert>\n-11#include <iostream>\n-12#include <type_traits>\n-13\n-14#include <dune/common/documentation.hh>\n-15#include <dune/common/version.hh>\n-16#include <dune/common/typetraits.hh>\n-17#include <dune/common/indices.hh>\n-18#include <dune/common/hybridutilities.hh>\n-19#include <dune/common/typelist.hh>\n-20\n-21#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh>\n-22#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-23\n-24namespace _\bD_\bu_\bn_\be {\n-25 namespace TypeTree {\n-26\n-27 // The Impl namespace collects some free standing functions helper functions\n-28 namespace Impl {\n-29 template<typename T>\n-30 struct check_size_t_impl\n-31 {\n-32 static constexpr auto check() {\n-33 return std::is_same_v<T, std::size_t>;\n-34 }\n-35 };\n-36\n-37 template<class T, T v>\n-38 struct check_size_t_impl<std::integral_constant<T,v>>\n-39 {\n-40 static constexpr auto check() {\n-41 return std::is_same_v<T, std::size_t>;\n-42 }\n-43 };\n-44\n-45 template<typename T>\n-46 constexpr auto check_size_t() {\n-47 return check_size_t_impl<T>::check();\n-48 }\n-49\n-50 template<typename T>\n-51 constexpr auto cast_size_t(const T & v) {\n-52 // check that T is an integral type that can be cast to std::size_t\n-53 static_assert(\n-54 std::is_convertible_v<T,std::size_t> &&\n-55 std::is_integral_v<T>,\n-56 \"HybridTreePath indices must be convertible to std::size_t or std::\n-integral_constant<std::size_t,v>\");\n-57 // positivity can only be checked at run-time\n-58 assert(v >= 0 &&\n-59 \"HybridTreePath indices must be convertible to std::size_t or std::\n-integral_constant<std::size_t,v>\");\n-60 return std::size_t(v);\n-61 }\n-62\n-63 template<class T, T v>\n-64 constexpr auto cast_size_t(std::integral_constant<T,v>) {\n-65 // check that T is an intergal type that can be cast to std::size_t\n-66 // and that v is positive\n-67 static_assert(\n-68 std::is_convertible_v<T,std::size_t> &&\n-69 std::is_integral_v<T> &&\n-70 v >= 0,\n-71 \"HybridTreePath indices must be convertible to std::size_t or std::\n-integral_constant<std::size_t,v>\");\n-72 return std::integral_constant<std::size_t,v>();\n-73 }\n-74\n-75 // these are helper functions that help triggering a deprecation warning\n-76 template<typename T>\n-77 [[deprecated(\"HybridTreePath index storage should be std::size_t or std::\n-integral_constant<std::size_t,v>!\\n\"\n-78 \"Using anything else is deprecated and will not possible after the 2.10\n-release.\\n\"\n-79 \"It is adviced not to specify the template parameters expicitly,\\n\"\n-80 \"but to use the helper functions `hybridTreePath` or `treePath`.\"\n-81 \"These take care of converting indices to the appropriate storage.\")]]\n-82 constexpr bool check_storage_type(MetaType<T>) {\n-83 return false;\n-84 }\n-85\n-86 // specialization of valid index type\n-87 template<std::size_t v>\n-88 constexpr bool check_storage_type(MetaType<std::integral_constant<std::\n-size_t,v>>) {\n-89 return true;\n-90 }\n-91\n-92 // specialization of valid index type\n-93 constexpr bool check_storage_type(MetaType<std::size_t>) {\n-94 return true;\n-95 }\n-96 }\n-97\n-98 template<typename... T>\n-99 class HybridTreePath;\n-100\n-104\n-_\b1_\b0_\b5 namespace TreePathType {\n-_\b1_\b0_\b6 enum _\bT_\by_\bp_\be { _\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc, _\bd_\by_\bn_\ba_\bm_\bi_\bc };\n-107 }\n-108\n-109 template<typename>\n-_\b1_\b1_\b0 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be;\n-111\n-112 template<typename,std::size_t>\n-_\b1_\b1_\b3 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk;\n-114\n-115 template<typename,std::size_t>\n-_\b1_\b1_\b6 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt;\n-117\n-118 template<typename>\n-_\b1_\b1_\b9 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk;\n-120\n-121 template<typename>\n-_\b1_\b2_\b2 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt;\n-123\n-124 template<typename, std::size_t...>\n-_\b1_\b2_\b5 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk;\n-126\n-127 template<typename>\n-_\b1_\b2_\b8 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt;\n-129\n-130 template<typename, typename>\n-_\b1_\b3_\b1 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt;\n-132\n-133 template<std::size_t... i>\n-_\b1_\b3_\b4 void _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh(std::ostream& os)\n-135 {}\n-136\n-137 template<std::size_t k, std::size_t... i>\n-_\b1_\b3_\b8 void _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh(std::ostream& os)\n-139 {\n-140 os << k << \" \";\n-141 _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh<i...>(os);\n-142 }\n-143\n-145\n-156 template<typename... T>\n-_\b1_\b5_\b7 class _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-158 {\n-159\n-160 // enable check for dune-typetree 2.10 and above\n-161#if DUNE_VERSION_GTE(TYPETREE,2,10)\n-162 // make sure that all indices use std::size_t as the underlying number type\n-163 static_assert((... && Impl::check_size_t<T>()),\n-164 \"HybridTreePath index storage must be std::size_t or std::\n-integral_constant<std::size_t,v>\");\n-165#endif\n-166\n-167 public:\n-168\n-_\b1_\b7_\b0 using _\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be = std::index_sequence_for<T...>;\n-171\n-_\b1_\b7_\b3 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh()\n-174 {\n-175 [[maybe_unused]] constexpr bool check =\n-176 (... && Impl::check_storage_type(MetaType<T>()) );\n-177 }\n-178\n-_\b1_\b7_\b9 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& tp) = default;\n-_\b1_\b8_\b0 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh&& tp) = default;\n-181\n-_\b1_\b8_\b2 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& tp) = default;\n-_\b1_\b8_\b3 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh&& tp) = default;\n-184\n-_\b1_\b8_\b6 explicit constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(std::tuple<T...> t)\n-187 : _data(t)\n-188 {\n-189 [[maybe_unused]] constexpr bool check =\n-190 (... && Impl::check_storage_type(MetaType<T>()) );\n-191 }\n-192\n-194 template<typename... U,\n-195 typename std::enable_if_t<(sizeof...(T) > 0 && sizeof...(U) == sizeof...\n-(T)),bool> = true>\n-_\b1_\b9_\b6 explicit constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(U... t)\n-197 : _data(t...) // we assume that all arguments are convertible to the types\n-T...\n-198 {\n-199 [[maybe_unused]] constexpr bool check =\n-200 (... && Impl::check_storage_type(MetaType<T>()) );\n-201 }\n-202\n-_\b2_\b0_\b4 [[nodiscard]] constexpr static _\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be _\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be()\n-205 {\n-206 return {};\n-207 }\n-208\n-_\b2_\b1_\b0 [[nodiscard]] constexpr static std::size_t _\bs_\bi_\bz_\be()\n-211 {\n-212 return sizeof...(T);\n-213 }\n-214\n-_\b2_\b1_\b6 [[nodiscard]] constexpr static std::size_t _\bm_\ba_\bx_\b__\bs_\bi_\bz_\be()\n-217 {\n-218 return _\bs_\bi_\bz_\be();\n-219 }\n-220\n-222 template<std::size_t i,\n-223 std::enable_if_t<(sizeof...(T) > i),bool> = true>\n-_\b2_\b2_\b4 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](Dune::index_constant<i>) const\n-225 {\n-226 return std::get<i>(_data);\n-227 }\n-228\n-_\b2_\b3_\b0 [[nodiscard]] constexpr std::size_t _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t pos) const\n-231 {\n-232 std::size_t entry = 0;\n-233 Dune::Hybrid::forEach(_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be(), [&] (auto i) {\n-234 if (i==pos)\n-235 entry = this->_\be_\bl_\be_\bm_\be_\bn_\bt(i);\n-236 });\n-237 return entry;\n-238 }\n-239\n-241 template<std::size_t i,\n-242 std::enable_if_t<(sizeof...(T) > i),bool> = true>\n-_\b2_\b4_\b3 [[nodiscard]] constexpr auto _\be_\bl_\be_\bm_\be_\bn_\bt(Dune::index_constant<i> pos = {})\n-const\n-244 {\n-245 return std::get<i>(_data);\n-246 }\n-247\n-_\b2_\b4_\b9 [[nodiscard]] constexpr std::size_t _\be_\bl_\be_\bm_\be_\bn_\bt(std::size_t pos) const\n-250 {\n-251 std::size_t entry = 0;\n-252 Dune::Hybrid::forEach(_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be(), [&] (auto i) {\n-253 if (i==pos)\n-254 entry = this->_\be_\bl_\be_\bm_\be_\bn_\bt(i);\n-255 });\n-256 return entry;\n-257 }\n-258\n-260 template<std::size_t n = sizeof...(T),\n-261 std::enable_if_t<(n > 0 && n == sizeof...(T)),bool> = true>\n-_\b2_\b6_\b2 [[nodiscard]] constexpr auto _\bf_\br_\bo_\bn_\bt() const\n-263 {\n-264 return std::get<0>(_data);\n-265 }\n-266\n-268 template<std::size_t n = sizeof...(T),\n-269 std::enable_if_t<(n > 0 && n == sizeof...(T)),bool> = true>\n-_\b2_\b7_\b0 [[nodiscard]] constexpr auto _\bb_\ba_\bc_\bk() const\n-271 {\n-272 return std::get<n-1>(_data);\n-273 }\n-274\n-275#ifndef DOXYGEN\n-276\n-277 // I can't be bothered to make all the external accessors friends of\n-HybridTreePath,\n-278 // so we'll only hide the data tuple from the user in Doxygen.\n-279\n-280 using Data = std::tuple<T...>;\n-281 Data _data;\n-282\n-283#endif // DOXYGEN\n-284\n-285 };\n-286\n-288\n-294 template<typename... T>\n-_\b2_\b9_\b5 [[nodiscard]] constexpr auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T... t)\n-296 {\n-297 // check that all entries are based on std::size_t\n-298 static_assert((... && Impl::check_size_t<T>()),\n-299 \"HybridTreePath indices must be of type std::size_t or std::\n-integral_constant<std::size_t,v>\");\n-300 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...>(t...);\n-301 }\n-302\n-304\n-311 template<typename... T>\n-_\b3_\b1_\b2 [[nodiscard]] constexpr auto _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T&... t)\n-313 {\n-314 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(Impl::cast_size_t(t)...);\n-315 }\n-316\n-318\n-325 template<typename... T>\n-_\b3_\b2_\b6 [[nodiscard]] constexpr auto _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(const T&... t)\n-327 {\n-328 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(Impl::cast_size_t(t)...);\n-329 }\n-330\n-331\n-333 template<typename... T>\n-_\b3_\b3_\b4 [[nodiscard]] constexpr std::size_t _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&)\n-335 {\n-336 return sizeof...(T);\n-337 }\n-338\n-340\n-356 template<std::size_t i, typename... T>\n-_\b3_\b5_\b7 [[nodiscard]] constexpr auto _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp,\n-index_constant<i> = {})\n-358 -> typename std::decay<decltype(std::get<i>(tp._data))>::type\n-359 {\n-360 return std::get<i>(tp._data);\n-361 }\n-362\n-364\n-379 template<std::size_t i,typename... T>\n-_\b3_\b8_\b0 [[nodiscard]] constexpr std::size_t _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx(const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> = {})\n-381 {\n-382 return std::get<i>(tp._data);\n-383 }\n-384\n-386\n-391 template<typename... T>\n-_\b3_\b9_\b2 [[nodiscard]] constexpr auto _\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n-393 -> decltype(tp._\bb_\ba_\bc_\bk())\n-394 {\n-395 return tp._\bb_\ba_\bc_\bk();\n-396 }\n-397\n-399\n-404 template<typename... T>\n-_\b4_\b0_\b5 [[nodiscard]] constexpr auto _\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n-406 -> decltype(tp._\bf_\br_\bo_\bn_\bt())\n-407 {\n-408 return tp._\bf_\br_\bo_\bn_\bt();\n-409 }\n-410\n-412\n-415 template<typename... T>\n-_\b4_\b1_\b6 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,std::size_t> _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, std::size_t i)\n-417 {\n-418 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,std::size_t>(std::tuple_cat(tp._data,std::\n-make_tuple(i)));\n-419 }\n-420\n-422\n-436 template<std::size_t i, typename... T>\n-_\b4_\b3_\b7 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,index_constant<i>> _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> i_ = {})\n-438 {\n-439 return HybridTreePath<T...,index_constant<i> >(std::tuple_cat\n-(tp._data,std::make_tuple(i_)));\n-440 }\n-441\n-443\n-446 template<typename... T>\n-_\b4_\b4_\b7 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::size_t,T...> _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt(const\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, std::size_t element)\n-448 {\n-449 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::size_t,T...>(std::tuple_cat(std::make_tuple\n-(element),tp._data));\n-450 }\n-451\n-453\n-467 template<std::size_t i, typename... T>\n-_\b4_\b6_\b8 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>,T...> _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt\n-(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> _i = {})\n-469 {\n-470 return HybridTreePath<index_constant<i>,T...>(std::tuple_cat(std::\n-make_tuple(_i),tp._data));\n-471 }\n-472\n-474\n-485 template<typename I, typename... T, std::enable_if_t<(sizeof...(T) >\n-0),bool> = true>\n-_\b4_\b8_\b6 [[nodiscard]] constexpr auto _\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&\n-tp, I i) {\n-487 using ::Dune::Hybrid::plus;\n-488 return _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk(tp), _\bp_\bl_\bu_\bs(_\bb_\ba_\bc_\bk(tp), i));\n-489 }\n-490\n-491\n-493\n-504 template<typename I, typename... T, std::enable_if_t<(sizeof...(T) >\n-0),bool> = true>\n-_\b5_\b0_\b5 [[nodiscard]] constexpr auto _\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&\n-tp, I i) {\n-506 using ::Dune::Hybrid::plus;\n-507 return _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt(_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt(tp), _\bp_\bl_\bu_\bs(_\bf_\br_\bo_\bn_\bt(tp), i));\n-508 }\n-509\n-511 template<class... Head, class... Other>\n-_\b5_\b1_\b2 [[nodiscard]] constexpr auto _\bj_\bo_\bi_\bn(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bH_\be_\ba_\bd_\b._\b._\b._\b>& head,\n-const Other&... tail) {\n-513 return _\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::tuple_cat(head._data, tail._data...)};\n-514 }\n-515\n-517 template<class... T>\n-_\b5_\b1_\b8 [[nodiscard]] constexpr auto _\br_\be_\bv_\be_\br_\bs_\be(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp) {\n-519 constexpr std::size_t size = sizeof...(T);\n-520 return unpackIntegerSequence([&](auto... i){\n-521 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(tp[index_constant<size-i-1>{}] ...);\n-522 }, std::make_index_sequence<size>{});\n-523 }\n-524\n-526\n-529 template <class... T, std::enable_if_t<(sizeof...(T) > 0),bool> = true>\n-_\b5_\b3_\b0 [[nodiscard]] constexpr auto _\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n-531 {\n-532 return unpackIntegerSequence([&](auto... i){\n-533 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::make_tuple(std::get<i+1>(tp._data)...)};\n-534 }, std::make_index_sequence<(sizeof...(T) - 1)>{});\n-535 }\n-536\n-538\n-541 template <class... T, std::enable_if_t<(sizeof...(T) > 0),bool> = true>\n-_\b5_\b4_\b2 [[nodiscard]] constexpr auto _\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n-543 {\n-544 return unpackIntegerSequence([&](auto... i){\n-545 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::make_tuple(std::get<i>(tp._data)...)};\n-546 }, std::make_index_sequence<(sizeof...(T) - 1)>{});\n-547 }\n-548\n-550\n-558 template <class... S, class... T>\n-_\b5_\b5_\b9 [[nodiscard]] constexpr bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(\n-560 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bS_\b._\b._\b._\b>& lhs,\n-561 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& rhs)\n-562 {\n-563 if constexpr (sizeof...(S) == sizeof...(T)) {\n-564 if constexpr ((Dune::IsInteroperable<S,T>::value &&...)) {\n-565 return unpackIntegerSequence([&](auto... i){\n-566 return ((std::get<i>(lhs._data) == std::get<i>(rhs._data)) &&...);\n-567 }, std::make_index_sequence<(sizeof...(S))>{});\n-568 } else {\n-569 return false;\n-570 }\n-571 } else {\n-572 return false;\n-573 }\n-574 }\n-575\n-577\n-582 template <class S, S... lhs, class T, T... rhs>\n-_\b5_\b8_\b3 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(\n-584 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<S,lhs>...>&,\n-585 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<T,rhs>...>&)\n-586 {\n-587 return std::bool_constant<_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(lhs...) == _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(rhs...)>\n-{};\n-588 }\n-589\n-590\n-592 template <class... S, class... T>\n-_\b5_\b9_\b3 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(\n-594 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bS_\b._\b._\b._\b>& lhs,\n-595 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& rhs)\n-596 {\n-597 return !(lhs == rhs);\n-598 }\n-599\n-601 template <class S, S... lhs, class T, T... rhs>\n-_\b6_\b0_\b2 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(\n-603 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<S,lhs>...>&,\n-604 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<T,rhs>...>&)\n-605 {\n-606 return std::bool_constant<_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(lhs...) != _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(rhs...)>\n-{};\n-607 }\n-608\n-609\n-_\b6_\b1_\b0 inline namespace Literals {\n-611\n-613\n-617 template <char... digits>\n-_\b6_\b1_\b8 constexpr auto operator\"\" _tp()\n-619 {\n-620 using namespace Dune::Indices::Literals;\n-621 return _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(operator\"\"_ic<digits...>());\n-622 }\n-623\n-624 } // end namespace Literals\n-625\n-626\n-627 template<std::size_t... i>\n-_\b6_\b2_\b8 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...> >\n-629 : public index_constant<sizeof...(i)>\n-630 {};\n-631\n-632\n-633 template<std::size_t k, std::size_t... i>\n-_\b6_\b3_\b4 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,k>\n-635 {\n-_\b6_\b3_\b6 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...,index_constant<k>> _\bt_\by_\bp_\be;\n-637 };\n-638\n-639 template<std::size_t k, std::size_t... i>\n-_\b6_\b4_\b0 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,k>\n-641 {\n-_\b6_\b4_\b2 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bk_\b>,index_constant<i>...> _\bt_\by_\bp_\be;\n-643 };\n-644\n-645 template<std::size_t k>\n-_\b6_\b4_\b6 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>>>\n-647 : public index_constant<k>\n-648 {};\n-649\n-650 template<std::size_t j, std::size_t k, std::size_t... l>\n-_\b6_\b5_\b1 struct\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<j>,index_constant<k>,index_constant<l>...>>\n-652 : public\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<HybridTreePath<index_constant<k>,index_constant<l>...>>\n-653 {};\n-654\n-655 template<std::size_t k, std::size_t... i>\n-_\b6_\b5_\b6 struct\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>,index_constant<i>...>>\n-657 : public index_constant<k>\n-658 {};\n-659\n-660 template<std::size_t k, std::size_t... i>\n-_\b6_\b6_\b1 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>>,i...>\n-662 {\n-_\b6_\b6_\b3 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...> _\bt_\by_\bp_\be;\n-664 };\n-665\n-666 template<std::size_t j,\n-667 std::size_t k,\n-668 std::size_t... l,\n-669 std::size_t... i>\n-_\b6_\b7_\b0 struct\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<j>,index_constant<k>,index_constant<l>...>,i...>\n-671 : public\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<HybridTreePath<index_constant<k>,index_constant<l>...>,i...,j>\n-672 {};\n-673\n-674 template<std::size_t k, std::size_t... i>\n-_\b6_\b7_\b5 struct\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>,index_constant<i>...> >\n-676 {\n-_\b6_\b7_\b7 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...> _\bt_\by_\bp_\be;\n-678 };\n-679\n-680 template<std::size_t... i, std::size_t... k>\n-_\b6_\b8_\b1 struct\n-_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>...>\n->\n-682 {\n-_\b6_\b8_\b3 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...,index_constant<k>...> _\bt_\by_\bp_\be;\n-684 };\n-685\n-686#ifndef DOXYGEN\n-687\n-688 namespace impl {\n-689\n-690 // end of recursion\n-691 template<std::size_t i, typename... T>\n-692 typename std::enable_if<\n-693 (i == sizeof...(T))\n-694 >::type\n-695 print_hybrid_tree_path(std::ostream& os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp,\n-index_constant<i> _i)\n-696 {}\n-697\n-698 // print current entry and recurse\n-699 template<std::size_t i, typename... T>\n-700 typename std::enable_if<\n-701 (i < sizeof...(T))\n-702 >::type\n-703 print_hybrid_tree_path(std::ostream& os, const HybridTreePath<T...>& tp,\n-index_constant<i> _i)\n-704 {\n-705 os << _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx(tp,_i) << \" \";\n-706 print_hybrid_tree_path(os,tp,index_constant<i+1>{});\n-707 }\n-708\n-709 } // namespace impl\n-710\n-711#endif // DOXYGEN\n-712\n-714 template<typename... T>\n-_\b7_\b1_\b5 std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n-716 {\n-717 os << \"HybridTreePath< \";\n-718 impl::print_hybrid_tree_path(os, tp, index_constant<0>{});\n-719 os << \">\";\n-720 return os;\n-721 }\n-722\n-723 template<std::size_t... i>\n-_\b7_\b2_\b4 using _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bD_\bu_\bn_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...>;\n-725\n-727\n-728 } // namespace TypeTree\n-729} //namespace Dune\n-730\n-731#endif // DUNE_TYPETREE_TREEPATH_HH\n-_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh\n-_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n-T... > &tp, std::size_t i)\n-Appends a run time index to a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-std::ostream & operator<<(std::ostream &os, const HybridTreePath< T... > &tp)\n-Dumps a HybridTreePath to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:715\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n-constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n-Returns the size (number of components) of the given HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bb_\ba_\bc_\bk\n-constexpr auto back(const HybridTreePath< T... > &tp) -> decltype(tp.back())\n-Returns a copy of the last element of the HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:392\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt\n-constexpr HybridTreePath< std::size_t, T... > push_front(const HybridTreePath<\n-T... > &tp, std::size_t element)\n-Prepends a run time index to a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:447\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt\n-constexpr auto accumulate_front(const HybridTreePath< T... > &tp, I i)\n-Hybrid utility that accumulates to the front of a multi-index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:505\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt\n-constexpr auto pop_front(const HybridTreePath< T... > &tp)\n-Removes first index on a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:530\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bv_\be_\br_\bs_\be\n-constexpr auto reverse(const HybridTreePath< T... > &tp)\n-Reverses the order of the elements in the path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:518\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk\n-constexpr auto accumulate_back(const HybridTreePath< T... > &tp, I i)\n-Hybrid utility that accumulates to the back of a multi-index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:486\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bj_\bo_\bi_\bn\n-constexpr auto join(const HybridTreePath< Head... > &head, const Other &...\n-tail)\n-Join two tree paths into one.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:512\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by\n-constexpr auto treePathEntry(const HybridTreePath< T... > &tp, index_constant<\n-i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type\n-Returns a copy of the i-th element of the HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:357\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk\n-constexpr auto pop_back(const HybridTreePath< T... > &tp)\n-Removes last index on a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:542\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-constexpr auto operator!=(const HybridTreePath< S... > &lhs, const\n-HybridTreePath< T... > &rhs)\n-Compare two HybridTreePaths for unequality.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:593\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto hybridTreePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx\n-constexpr std::size_t treePathIndex(const HybridTreePath< T... > &tp,\n-index_constant< i >={})\n-Returns the index value of the i-th element of the HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:380\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto makeTreePath(const T... t)\n-helper function to construct a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-constexpr bool operator==(const HybridTreePath< S... > &lhs, const\n-HybridTreePath< T... > &rhs)\n-Compare two HybridTreePaths for value equality.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:559\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh\n-void print_tree_path(std::ostream &os)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt\n-constexpr auto front(const HybridTreePath< T... > &tp) -> decltype(tp.front())\n-Returns a copy of the first element of the HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:405\n+5#ifndef DUNE_TYPETREE_EXCEPTIONS_HH\n+6#define DUNE_TYPETREE_EXCEPTIONS_HH\n+7\n+8#include <dune/common/exceptions.hh>\n+9\n+15namespace _\bD_\bu_\bn_\be {\n+16 namespace TypeTree {\n+17\n+_\b1_\b9 class _\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+20 : public Dune::Exception\n+21 {};\n+22\n+23 } // namespace TypeTree\n+24} // namespace Dune\n+25\n+26#endif // DUNE_TYPETREE_EXCEPTIONS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc\n-@ fullyStatic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n-@ dynamic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs\n-Statically combine two values of type result_type using +.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-A hybrid version of TreePath that supports both compile time and run time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr HybridTreePath(HybridTreePath &&tp)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bb_\ba_\bc_\bk\n-constexpr auto back() const\n-Get the last index value. Only available in non-empty paths.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-constexpr HybridTreePath & operator=(const HybridTreePath &tp)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-constexpr std::size_t element(std::size_t pos) const\n-Get the index value at position pos.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr HybridTreePath(std::tuple< T... > t)\n-Constructor from a std::tuple\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-constexpr HybridTreePath & operator=(HybridTreePath &&tp)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr HybridTreePath(U... t)\n-Constructor from arguments.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr HybridTreePath()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:173\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-constexpr auto element(Dune::index_constant< i > pos={}) const\n-Get the last index value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size()\n-Get the size (length) of this path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-constexpr auto operator[](Dune::index_constant< i >) const\n-Get the index value at position pos.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bf_\br_\bo_\bn_\bt\n-constexpr auto front() const\n-Get the first index value. Only available in non-empty paths.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:262\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be\n-static constexpr index_sequence enumerate()\n-Returns an index_sequence for enumerating the components of this\n-HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr HybridTreePath(const HybridTreePath &tp)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-constexpr std::size_t operator[](std::size_t pos) const\n-Get the index value at position pos.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bm_\ba_\bx_\b__\bs_\bi_\bz_\be\n-static constexpr std::size_t max_size()\n-Get the size (length) of this path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be\n-std::index_sequence_for< T... > index_sequence\n-An index_sequence for the entries in this HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk\n-_\b>_\b:_\b:_\bt_\by_\bp_\be\n-HybridTreePath< index_constant< i >..., index_constant< k > > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:636\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk\n-_\b>_\b:_\b:_\bt_\by_\bp_\be\n-HybridTreePath< index_constant< k >, index_constant< i >... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:642\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b _\b>_\b,_\b _\bi_\b._\b._\b.\n-_\b>_\b:_\b:_\bt_\by_\bp_\be\n-HybridTreePath< index_constant< i >... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:663\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n-_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-HybridTreePath< index_constant< i >... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:677\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,\n-_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-HybridTreePath< index_constant< i >..., index_constant< k >... > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:683\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+Base class for all TypeTree exceptions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:21\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00044.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00044.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: typetraits.hh File Reference</title>\n+<title>dune-typetree: compositenode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,100 +71,42 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">typetraits.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">compositenode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <type_traits></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <tuple></code><br />\n+<code>#include <memory></code><br />\n+<code>#include <type_traits></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n </div>\n <p><a href=\"a00044_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01472.html\">Dune::first_type< T0, T... ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01076.html\">Dune::TypeTree::CompositeNode< Children ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for composite nodes based on variadic templates. <a href=\"a01076.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01476.html\">Dune::TypeTree::has_node_tag< T ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01480.html\">Dune::TypeTree::has_node_tag< T >::yes</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01484.html\">Dune::TypeTree::has_node_tag< T >::no</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01488.html\">Dune::TypeTree::has_node_tag_value< T, V ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01492.html\">Dune::TypeTree::has_node_tag_value< T, V >::maybe< N ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01496.html\">Dune::TypeTree::has_node_tag_value< T, V >::yes</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01500.html\">Dune::TypeTree::has_node_tag_value< T, V >::no</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01504.html\">Dune::TypeTree::has_implementation_tag< T ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01508.html\">Dune::TypeTree::has_implementation_tag< T >::yes</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01512.html\">Dune::TypeTree::has_implementation_tag< T >::no</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01516.html\">Dune::TypeTree::has_implementation_tag_value< T, V ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01520.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::maybe< N ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01524.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::yes</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01528.html\">Dune::TypeTree::has_implementation_tag_value< T, V >::no</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01532.html\">Dune::TypeTree::AlwaysVoid< typename ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01536.html\">Dune::TypeTree::meta_function</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Marker tag declaring a meta function. <a href=\"a01536.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01540.html\">Dune::TypeTree::lazy_evaluate< F ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Helper meta function to delay evaluation of F. <a href=\"a01540.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01544.html\">Dune::TypeTree::lazy_identity< F ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Identity function. <a href=\"a01544.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function< F ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Meta function that evaluates its argument iff it inherits from <a class=\"el\" href=\"a01536.html\" title=\"Marker tag declaring a meta function.\">meta_function</a>. <a href=\"a01548.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01552.html\">Dune::TypeTree::IsTreePath< T ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Check if type represents a tree path. <a href=\"a01552.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01080.html\">Dune::TypeTree::CompositeNode< Children >::Child< k ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01080.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00107\" id=\"r_a00107\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html\">Dune::TypeTree::impl</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:aa52c80157f2085d6b8f49faa2856595e\" id=\"r_aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n-<tr class=\"memitem:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">T * </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">Dune::TypeTree::declptr</a> ()</td></tr>\n-<tr class=\"memdesc:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Helper function for generating a pointer to a value of type T in an unevaluated operand setting. <br /></td></tr>\n-<tr class=\"separator:aa52c80157f2085d6b8f49faa2856595e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a224db604579b3eae53710448ac4d4547\" id=\"r_a224db604579b3eae53710448ac4d4547\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">Dune::TypeTree::impl::isTreePath</a> (void *) -> std::false_type</td></tr>\n-<tr class=\"separator:a224db604579b3eae53710448ac4d4547\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:acfd196de0f9309186d50cd012950677c\" id=\"r_acfd196de0f9309186d50cd012950677c\"><td class=\"memTemplParams\" colspan=\"2\">template<class... I> </td></tr>\n-<tr class=\"memitem:acfd196de0f9309186d50cd012950677c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00107.html#acfd196de0f9309186d50cd012950677c\">Dune::TypeTree::impl::isTreePath</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< I... > *) -> std::true_type</td></tr>\n-<tr class=\"separator:acfd196de0f9309186d50cd012950677c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a9f06f53488df709cddad40051120e058\" id=\"r_a9f06f53488df709cddad40051120e058\"><td class=\"memTemplParams\" colspan=\"2\">template<class T > </td></tr>\n-<tr class=\"memitem:a9f06f53488df709cddad40051120e058\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\">Dune::TypeTree::isTreePath</a> (const T &) -> <a class=\"el\" href=\"a01552.html\">IsTreePath</a>< T ></td></tr>\n-<tr class=\"memdesc:a9f06f53488df709cddad40051120e058\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Check if given object represents a tree path. <br /></td></tr>\n-<tr class=\"separator:a9f06f53488df709cddad40051120e058\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,87 +1,29 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-typetraits.hh File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+compositenode.hh File Reference\n+#include <tuple>\n+#include <memory>\n #include <type_traits>\n-#include <dune/common/typetraits.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be_\b<_\b _\bT_\b0_\b,_\b _\bT_\b._\b._\b._\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n+\u00a0 Base class for composite nodes based on variadic templates. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\by_\be_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\bn_\bo\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bm_\ba_\by_\bb_\be_\b<_\b _\bN_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\by_\be_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bn_\bo\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\by_\be_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b<_\b _\bT_\b _\b>_\b:_\b:_\bn_\bo\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bm_\ba_\by_\bb_\be_\b<_\b _\bN_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\by_\be_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b<_\b _\bT_\b,_\b _\bV_\b _\b>_\b:_\b:_\bn_\bo\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd_\b<_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-\u00a0 Marker tag declaring a meta function. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bF_\b _\b>\n-\u00a0 Helper meta function to delay evaluation of F. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b<_\b _\bF_\b _\b>\n-\u00a0 Identity function. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bF_\b _\b>\n-\u00a0 Meta function that evaluates its argument iff it inherits from\n- _\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bT_\b _\b>\n-\u00a0 Check if type represents a tree path. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n+\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename T >\n- T *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bc_\bl_\bp_\bt_\br ()\n-\u00a0 Helper function for generating a pointer to a value of type T\n- in an unevaluated operand setting.\n-\u00a0\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (void *) -> std::false_type\n-\u00a0\n-template<class... I>\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< I... >\n- *) -> std::true_type\n-\u00a0\n-template<class T >\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T &) -> _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T >\n-\u00a0 Check if given object represents a tree path.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00044_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00044_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: typetraits.hh Source File</title>\n+<title>dune-typetree: compositenode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,277 +74,267 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">typetraits.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">compositenode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00044.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <tuple></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00008.html\">dune/typetree/childextraction.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00014.html\">dune/typetree/typetraits.hh</a>></span></div>\n <div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> <span class=\"comment\">// Provide some more C++11 TMP helpers.</span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"comment\">// These should be upstreamed to dune-common ASAP.</span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01468.html\"> 21</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01468.html\">first_type</a>;</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T0, <span class=\"keyword\">typename</span>... T></div>\n-<div class=\"foldopen\" id=\"foldopen00024\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01472.html\"> 24</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01468.html\">first_type</a><T0,T...></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> {</div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01472.html#a86292d90287ae32933442f183d478e62\"> 26</a></span> <span class=\"keyword\">typedef</span> T0 <a class=\"code hl_typedef\" href=\"a01472.html#a86292d90287ae32933442f183d478e62\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00032\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html\"> 32</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01476.html\">has_node_tag</a></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\"> 34</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01480.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\">dummy</a>[1]; };</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\"> 35</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01484.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\">dummy</a>[2]; };</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\"> 38</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01480.html\">yes</a> <a class=\"code hl_function\" href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<X></a> *);</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\"> 40</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01484.html\">no</a> <a class=\"code hl_function\" href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\">test</a>(...);</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01476.html#a371c998d5fbec08670affa46871e955f\"> 43</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01476.html#a371c998d5fbec08670affa46871e955f\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01480.html\">yes</a>);</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> V></div>\n-<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html\"> 47</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01488.html\">has_node_tag_value</a></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">int</span> N></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\"> 50</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01492.html\">maybe</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\">dummy</a>[N+1]; };</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\"> 51</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01496.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\">dummy</a>[2]; };</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\"> 52</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01500.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\">dummy</a>[1]; };</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01492.html\">maybe<std::is_base_of<V, NodeTag<X></a>><a class=\"code hl_variable\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">::value</a>></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\"> 56</a></span> <a class=\"code hl_function\" href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<X></a> * a);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#af380ad715d581f707130b84bcb94f144\"> 58</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01500.html\">no</a> <a class=\"code hl_function\" href=\"a01488.html#af380ad715d581f707130b84bcb94f144\">test</a>(...);</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\"> 61</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01496.html\">yes</a>);</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> };</div>\n-</div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children></div>\n+<div class=\"foldopen\" id=\"foldopen00027\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html\"> 27</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01076.html\">CompositeNode</a></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> {</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\"> 33</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> <a class=\"code hl_typedef\" href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\"> 36</a></span> <span class=\"keyword\">typedef</span> std::tuple<std::shared_ptr<Children>... > <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\"> 39</a></span> <span class=\"keyword\">typedef</span> std::tuple<Children...> <a class=\"code hl_typedef\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">ChildTypes</a>;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\"> 45</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\"> 48</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\">isComposite</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\"> 50</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a> ()</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,<span class=\"keyword\">sizeof</span>...(Children)>{};</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00057\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html\"> 57</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01080.html\">Child</a> {</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">static_assert</span>((k < <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a>()), <span class=\"stringliteral\">"child index out of range"</span>);</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\"> 62</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,ChildTypes>::type <a class=\"code hl_typedef\" href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\">Type</a>;</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html\"> 65</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01504.html\">has_implementation_tag</a></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\"> 67</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01508.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\">dummy</a>[1]; };</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\"> 68</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01512.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\">dummy</a>[2]; };</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#a7b759cea365a646f50b75937da355c83\"> 71</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01508.html\">yes</a> <a class=\"code hl_function\" href=\"a01504.html#a7b759cea365a646f50b75937da355c83\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag<X></a> *);</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\"> 73</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01512.html\">no</a> <a class=\"code hl_function\" href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\">test</a>(...);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\"> 76</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01508.html\">yes</a>);</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> V></div>\n-<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html\"> 80</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01516.html\">has_implementation_tag_value</a></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">int</span> N></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\"> 83</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01520.html\">maybe</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\">dummy</a>[N+1]; };</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01524.html#a785da89b03a035b24788f677da3344cb\"> 84</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01524.html\">yes</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01524.html#a785da89b03a035b24788f677da3344cb\">dummy</a>[2]; };</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\"> 85</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01528.html\">no</a> { <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\">dummy</a>[1]; };</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01520.html\">maybe<std::is_base_of<V, ImplementationTag<X></a>><a class=\"code hl_variable\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">::value</a>></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\"> 89</a></span> <a class=\"code hl_function\" href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\">test</a>(<a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag<X></a> * a);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> X></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\"> 91</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"a01528.html\">no</a> <a class=\"code hl_function\" href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\">test</a>(...);</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\"> 94</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">value</a> = <span class=\"keyword\">sizeof</span>(test<T>(0)) == <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"a01524.html\">yes</a>);</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> };</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\"> 65</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,ChildTypes>::type <a class=\"code hl_typedef\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n-<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01532.html\"> 98</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01532.html\">AlwaysVoid</a></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> {</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\"> 100</a></span> <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_typedef\" href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> };</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00076\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\"> 76</a></span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> {</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keywordflow\">return</span> *std::get<k>(_children);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\"> 86</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> {</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keywordflow\">return</span> *std::get<k>(_children);</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\"> 96</a></span> std::shared_ptr<typename Child<k>::Type> <a class=\"code hl_function\" href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\">childStorage</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> {</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keywordflow\">return</span> std::get<k>(_children);</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> }</div>\n </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n <div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\"> 106</a></span> T* <a class=\"code hl_function\" href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">declptr</a>();</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"comment\">// Support for lazy evaluation of meta functions. This is required when doing</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"comment\">// nested tag dispatch without C++11-style typedefs (based on using syntax).</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"comment\">// The standard struct-based meta functions cause premature evaluation in a</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"comment\">// context that is not SFINAE-compatible. We thus have to return the meta function</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"comment\">// without evaluating it, placing that burden on the caller. On the other hand,</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"comment\">// the lookup will often directly be the target type, so here is some helper code</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"comment\">// to automatically do the additional evaluation if necessary.</span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> <span class=\"comment\">// Too bad that the new syntax is GCC 4.6+...</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\"> 106</a></span> std::shared_ptr<const typename Child<k>::Type> <a class=\"code hl_function\" href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> {</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> <span class=\"keywordflow\">return</span> std::get<k>(_children);</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\"> 113</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\">setChild</a> (<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> std::get<k>(_children) = stackobject_to_shared_ptr(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>);</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01536.html\"> 123</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01536.html\">meta_function</a> {};</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\"> 120</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\">setChild</a> (<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>&& <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> {</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> std::get<k>(_children) = convert_arg(std::move(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>));</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n-<div class=\"foldopen\" id=\"foldopen00127\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01540.html\"> 127</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01540.html\">lazy_evaluate</a></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\"> 129</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> F::type <a class=\"code hl_typedef\" href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> };</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00127\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\"> 127</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\">setChild</a> (std::shared_ptr<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01080.html\">Child<k>::Type</a>> <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>, index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> {</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> std::get<k>(_children) = std::move(<a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a>);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> }</div>\n </div>\n <div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n-<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01544.html\"> 134</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01544.html\">lazy_identity</a></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\"> 136</a></span> <span class=\"keyword\">typedef</span> F <a class=\"code hl_typedef\" href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> };</div>\n+<div class=\"foldopen\" id=\"foldopen00132\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\"> 132</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keywordflow\">return</span> _children;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> }</div>\n </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n <div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F></div>\n-<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01548.html\"> 141</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01548.html\">evaluate_if_meta_function</a></div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::conditional<</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> std::is_base_of<meta_function,F>::value,</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <a class=\"code hl_struct\" href=\"a01540.html\">lazy_evaluate<F></a>,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <a class=\"code hl_struct\" href=\"a01544.html\">lazy_identity<F></a></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\"> 147</a></span> >::type::type <a class=\"code hl_typedef\" href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html\"> 150</a></span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"comment\">// Check if type is a or is derived from one of the tree path types</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"comment\">// Default overload for types not representing a tree path</span></div>\n-<div class=\"foldopen\" id=\"foldopen00155\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\"> 155</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">isTreePath</a>(<span class=\"keywordtype\">void</span>*)</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> -> std::false_type</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> {</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keywordflow\">return</span> std::false_type();</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"comment\">// The following two methods require a little bit of SFINAE trickery to work correctly:</span></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">// We have to make sure that they don't shadow the methods for direct child access because</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"comment\">// those get called by the generic child() machinery. If that machinery picks up the methods</span></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"comment\">// defined below, we have an infinite recursion.</span></div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"comment\">// So the methods make sure that either</span></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"comment\">// * there are more than one argument. In that case, we got multiple indices and can forward</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"comment\">// to the general machine.</span></div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"comment\">// * the first argument is not a valid flat index, i.e. either a std::size_t or an index_constant.</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"comment\">// The argument thus has to be some kind of TreePath instance that we can also pass to the</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"comment\">// generic machine.</span></div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"comment\">// The above SFINAE logic works, but there is still a problem with the return type deduction.</span></div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> <span class=\"comment\">// We have to do a lazy lookup of the return type after SFINAE has succeeded, otherwise the return</span></div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"comment\">// type deduction will trigger the infinite recursion.</span></div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> </div>\n <div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"comment\">// Overload for instances of HybridTreePath<...></span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... I></div>\n-<div class=\"foldopen\" id=\"foldopen00163\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00107.html#acfd196de0f9309186d50cd012950677c\"> 163</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">isTreePath</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<I...></a>*)</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> -> std::true_type</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keywordflow\">return</span> std::true_type();</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00182\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01552.html\"> 182</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath</a> :</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">public</span> decltype(impl::isTreePath((typename std::decay<T>::type*)(nullptr)))</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00193\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\"> 193</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00097.html#a9f06f53488df709cddad40051120e058\">isTreePath</a>(<span class=\"keyword\">const</span> T&)</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> -> <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<T></a></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> {</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<T></a>();</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"foldopen\" id=\"foldopen00166\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\"> 166</a></span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\">child</a> (Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (I0 i0, I... i)</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> {</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> );</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Indices></div>\n+<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\"> 186</a></span> <span class=\"keyword\">const</span> ImplementationDefined& <a class=\"code hl_function\" href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\">child</a> (Indices... indices)</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I0, <span class=\"keyword\">typename</span>... I,</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(I) > 0) || <a class=\"code hl_struct\" href=\"a01552.html\">IsTreePath<I0>::value</a>, <span class=\"keywordtype\">int</span> > = 0></div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">child</a> (I0 i0, I... i) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> {</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(I) > 0 || impl::_non_empty_tree_path(I0{}),</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"stringliteral\">"You cannot use the member function child() with an empty TreePath, use the freestanding version child(node,treePath) instead."</span></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> );</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a>(*<span class=\"keyword\">this</span>,i0,i...);</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n </div>\n <div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> } <span class=\"comment\">// end namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span>} <span class=\"comment\">// end namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> <span class=\"keyword\">protected</span>:</div>\n <div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TYPETRAITS_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n-<div class=\"ttc\" id=\"aa00092_html_gab9fecf64a233645a10b181d50e519441\"><div class=\"ttname\"><a href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a></div><div class=\"ttdeci\">typename std::decay_t< T >::ImplementationTag ImplementationTag</div><div class=\"ttdoc\">Returns the implementation tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:74</div></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\"> 214</a></span> <a class=\"code hl_function\" href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\">CompositeNode</a> ()</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Args, <span class=\"keyword\">typename</span> = <span class=\"keyword\">typename</span> std::enable_if<(<span class=\"keyword\">sizeof</span>...(Args) == <a class=\"code hl_function\" href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">degree</a>())>::type></div>\n+<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a00b3a94562f9f0503106baf7c3f869d7\"> 219</a></span> <a class=\"code hl_class\" href=\"a01076.html\">CompositeNode</a> (Args&&... args)</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> : _children(convert_arg(std::forward<Args>(args))...)</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\"> 224</a></span> <a class=\"code hl_function\" href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\">CompositeNode</a> (std::shared_ptr<Children>... children)</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> : _children(std::move(children)...)</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\"> 229</a></span> <a class=\"code hl_function\" href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\">CompositeNode</a> (<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a>& children)</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> : _children(children)</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <a class=\"code hl_typedef\" href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">NodeStorage</a> _children;</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_COMPOSITENODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00008_html\"><div class=\"ttname\"><a href=\"a00008.html\">childextraction.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00014_html\"><div class=\"ttname\"><a href=\"a00014.html\">typetraits.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00097_html_a9f06f53488df709cddad40051120e058\"><div class=\"ttname\"><a href=\"a00097.html#a9f06f53488df709cddad40051120e058\">Dune::TypeTree::isTreePath</a></div><div class=\"ttdeci\">constexpr auto isTreePath(const T &) -> IsTreePath< T ></div><div class=\"ttdoc\">Check if given object represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:193</div></div>\n-<div class=\"ttc\" id=\"aa00097_html_aa52c80157f2085d6b8f49faa2856595e\"><div class=\"ttname\"><a href=\"a00097.html#aa52c80157f2085d6b8f49faa2856595e\">Dune::TypeTree::declptr</a></div><div class=\"ttdeci\">T * declptr()</div><div class=\"ttdoc\">Helper function for generating a pointer to a value of type T in an unevaluated operand setting.</div></div>\n-<div class=\"ttc\" id=\"aa00107_html_a224db604579b3eae53710448ac4d4547\"><div class=\"ttname\"><a href=\"a00107.html#a224db604579b3eae53710448ac4d4547\">Dune::TypeTree::impl::isTreePath</a></div><div class=\"ttdeci\">constexpr auto isTreePath(void *) -> std::false_type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:155</div></div>\n-<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n-<div class=\"ttc\" id=\"aa01468_html\"><div class=\"ttname\"><a href=\"a01468.html\">Dune::first_type</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:21</div></div>\n-<div class=\"ttc\" id=\"aa01472_html_a86292d90287ae32933442f183d478e62\"><div class=\"ttname\"><a href=\"a01472.html#a86292d90287ae32933442f183d478e62\">Dune::first_type< T0, T... >::type</a></div><div class=\"ttdeci\">T0 type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:26</div></div>\n-<div class=\"ttc\" id=\"aa01476_html\"><div class=\"ttname\"><a href=\"a01476.html\">Dune::TypeTree::has_node_tag</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:33</div></div>\n-<div class=\"ttc\" id=\"aa01476_html_a371c998d5fbec08670affa46871e955f\"><div class=\"ttname\"><a href=\"a01476.html#a371c998d5fbec08670affa46871e955f\">Dune::TypeTree::has_node_tag::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines a NodeTag.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:43</div></div>\n-<div class=\"ttc\" id=\"aa01476_html_ac19e6e056b0e079ed7d1ca1b4785da14\"><div class=\"ttname\"><a href=\"a01476.html#ac19e6e056b0e079ed7d1ca1b4785da14\">Dune::TypeTree::has_node_tag::test</a></div><div class=\"ttdeci\">static yes test(NodeTag< X > *)</div></div>\n-<div class=\"ttc\" id=\"aa01476_html_acd3615ce65fda959179c09aae17edf50\"><div class=\"ttname\"><a href=\"a01476.html#acd3615ce65fda959179c09aae17edf50\">Dune::TypeTree::has_node_tag::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n-<div class=\"ttc\" id=\"aa01480_html\"><div class=\"ttname\"><a href=\"a01480.html\">Dune::TypeTree::has_node_tag::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:34</div></div>\n-<div class=\"ttc\" id=\"aa01480_html_a3192df83f6a29fbfebeee8b4b6eaf0ca\"><div class=\"ttname\"><a href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\">Dune::TypeTree::has_node_tag::yes::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:34</div></div>\n-<div class=\"ttc\" id=\"aa01484_html\"><div class=\"ttname\"><a href=\"a01484.html\">Dune::TypeTree::has_node_tag::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:35</div></div>\n-<div class=\"ttc\" id=\"aa01484_html_a75441ea51bdc776b367c2a8c3b868300\"><div class=\"ttname\"><a href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\">Dune::TypeTree::has_node_tag::no::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:35</div></div>\n-<div class=\"ttc\" id=\"aa01488_html\"><div class=\"ttname\"><a href=\"a01488.html\">Dune::TypeTree::has_node_tag_value</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:48</div></div>\n-<div class=\"ttc\" id=\"aa01488_html_a6c362704e90879dcd3ec9224f3153da7\"><div class=\"ttname\"><a href=\"a01488.html#a6c362704e90879dcd3ec9224f3153da7\">Dune::TypeTree::has_node_tag_value::test</a></div><div class=\"ttdeci\">static maybe< std::is_base_of< V, NodeTag< X > >::value > test(NodeTag< X > *a)</div></div>\n-<div class=\"ttc\" id=\"aa01488_html_aac5901b0648988f6fb1792b190e2394b\"><div class=\"ttname\"><a href=\"a01488.html#aac5901b0648988f6fb1792b190e2394b\">Dune::TypeTree::has_node_tag_value::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines a NodeTag of type V.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:61</div></div>\n-<div class=\"ttc\" id=\"aa01488_html_af380ad715d581f707130b84bcb94f144\"><div class=\"ttname\"><a href=\"a01488.html#af380ad715d581f707130b84bcb94f144\">Dune::TypeTree::has_node_tag_value::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n-<div class=\"ttc\" id=\"aa01492_html\"><div class=\"ttname\"><a href=\"a01492.html\">Dune::TypeTree::has_node_tag_value::maybe</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:50</div></div>\n-<div class=\"ttc\" id=\"aa01492_html_a94ff68b96ae845cae3f6d627f3b5a028\"><div class=\"ttname\"><a href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\">Dune::TypeTree::has_node_tag_value::maybe::dummy</a></div><div class=\"ttdeci\">char dummy[N+1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:50</div></div>\n-<div class=\"ttc\" id=\"aa01496_html\"><div class=\"ttname\"><a href=\"a01496.html\">Dune::TypeTree::has_node_tag_value::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:51</div></div>\n-<div class=\"ttc\" id=\"aa01496_html_a5e55794068fc41f0874216ce5c3490b9\"><div class=\"ttname\"><a href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\">Dune::TypeTree::has_node_tag_value::yes::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:51</div></div>\n-<div class=\"ttc\" id=\"aa01500_html\"><div class=\"ttname\"><a href=\"a01500.html\">Dune::TypeTree::has_node_tag_value::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:52</div></div>\n-<div class=\"ttc\" id=\"aa01500_html_ad8b08c8a2e083b49c652c94aaaa23d91\"><div class=\"ttname\"><a href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\">Dune::TypeTree::has_node_tag_value::no::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:52</div></div>\n-<div class=\"ttc\" id=\"aa01504_html\"><div class=\"ttname\"><a href=\"a01504.html\">Dune::TypeTree::has_implementation_tag</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:66</div></div>\n-<div class=\"ttc\" id=\"aa01504_html_a7b759cea365a646f50b75937da355c83\"><div class=\"ttname\"><a href=\"a01504.html#a7b759cea365a646f50b75937da355c83\">Dune::TypeTree::has_implementation_tag::test</a></div><div class=\"ttdeci\">static yes test(ImplementationTag< X > *)</div></div>\n-<div class=\"ttc\" id=\"aa01504_html_abcd13b6ded4ca8b54ee1c27b38f32fec\"><div class=\"ttname\"><a href=\"a01504.html#abcd13b6ded4ca8b54ee1c27b38f32fec\">Dune::TypeTree::has_implementation_tag::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n-<div class=\"ttc\" id=\"aa01504_html_ac4c8f738c1f7a2e1285ae9c00fa7c4e2\"><div class=\"ttname\"><a href=\"a01504.html#ac4c8f738c1f7a2e1285ae9c00fa7c4e2\">Dune::TypeTree::has_implementation_tag::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines an ImplementationTag.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:76</div></div>\n-<div class=\"ttc\" id=\"aa01508_html\"><div class=\"ttname\"><a href=\"a01508.html\">Dune::TypeTree::has_implementation_tag::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:67</div></div>\n-<div class=\"ttc\" id=\"aa01508_html_a6d85e10ee3fda0b59a07a1bedd2efd32\"><div class=\"ttname\"><a href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\">Dune::TypeTree::has_implementation_tag::yes::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:67</div></div>\n-<div class=\"ttc\" id=\"aa01512_html\"><div class=\"ttname\"><a href=\"a01512.html\">Dune::TypeTree::has_implementation_tag::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:68</div></div>\n-<div class=\"ttc\" id=\"aa01512_html_a16f6850149a28fedb189d6df08f5a94f\"><div class=\"ttname\"><a href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\">Dune::TypeTree::has_implementation_tag::no::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:68</div></div>\n-<div class=\"ttc\" id=\"aa01516_html\"><div class=\"ttname\"><a href=\"a01516.html\">Dune::TypeTree::has_implementation_tag_value</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:81</div></div>\n-<div class=\"ttc\" id=\"aa01516_html_a32be618fa6d36b1aa7a024e59f41d577\"><div class=\"ttname\"><a href=\"a01516.html#a32be618fa6d36b1aa7a024e59f41d577\">Dune::TypeTree::has_implementation_tag_value::test</a></div><div class=\"ttdeci\">static maybe< std::is_base_of< V, ImplementationTag< X > >::value > test(ImplementationTag< X > *a)</div></div>\n-<div class=\"ttc\" id=\"aa01516_html_a6fef49afbb6f6fb52baf55bad5aa52ff\"><div class=\"ttname\"><a href=\"a01516.html#a6fef49afbb6f6fb52baf55bad5aa52ff\">Dune::TypeTree::has_implementation_tag_value::test</a></div><div class=\"ttdeci\">static no test(...)</div></div>\n-<div class=\"ttc\" id=\"aa01516_html_a7d440aaa7ee60fac9c465c4cc2ec7910\"><div class=\"ttname\"><a href=\"a01516.html#a7d440aaa7ee60fac9c465c4cc2ec7910\">Dune::TypeTree::has_implementation_tag_value::value</a></div><div class=\"ttdeci\">static constexpr bool value</div><div class=\"ttdoc\">True if class T defines an ImplementationTag of type V.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:94</div></div>\n-<div class=\"ttc\" id=\"aa01520_html\"><div class=\"ttname\"><a href=\"a01520.html\">Dune::TypeTree::has_implementation_tag_value::maybe</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa01520_html_a599b42ba6b2a5d0f827cdc9bb67a4718\"><div class=\"ttname\"><a href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\">Dune::TypeTree::has_implementation_tag_value::maybe::dummy</a></div><div class=\"ttdeci\">char dummy[N+1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa01524_html\"><div class=\"ttname\"><a href=\"a01524.html\">Dune::TypeTree::has_implementation_tag_value::yes</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:84</div></div>\n-<div class=\"ttc\" id=\"aa01524_html_a785da89b03a035b24788f677da3344cb\"><div class=\"ttname\"><a href=\"a01524.html#a785da89b03a035b24788f677da3344cb\">Dune::TypeTree::has_implementation_tag_value::yes::dummy</a></div><div class=\"ttdeci\">char dummy[2]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:84</div></div>\n-<div class=\"ttc\" id=\"aa01528_html\"><div class=\"ttname\"><a href=\"a01528.html\">Dune::TypeTree::has_implementation_tag_value::no</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:85</div></div>\n-<div class=\"ttc\" id=\"aa01528_html_aa8ccfe6f4dff783e7222fe87254655aa\"><div class=\"ttname\"><a href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\">Dune::TypeTree::has_implementation_tag_value::no::dummy</a></div><div class=\"ttdeci\">char dummy[1]</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:85</div></div>\n-<div class=\"ttc\" id=\"aa01532_html\"><div class=\"ttname\"><a href=\"a01532.html\">Dune::TypeTree::AlwaysVoid</a></div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:99</div></div>\n-<div class=\"ttc\" id=\"aa01532_html_a56294a12e63e763b9e82a36d503be309\"><div class=\"ttname\"><a href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\">Dune::TypeTree::AlwaysVoid::type</a></div><div class=\"ttdeci\">void type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:100</div></div>\n-<div class=\"ttc\" id=\"aa01536_html\"><div class=\"ttname\"><a href=\"a01536.html\">Dune::TypeTree::meta_function</a></div><div class=\"ttdoc\">Marker tag declaring a meta function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:123</div></div>\n-<div class=\"ttc\" id=\"aa01540_html\"><div class=\"ttname\"><a href=\"a01540.html\">Dune::TypeTree::lazy_evaluate</a></div><div class=\"ttdoc\">Helper meta function to delay evaluation of F.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa01540_html_a699cb90460ba44cc0a4e5197b409d18d\"><div class=\"ttname\"><a href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\">Dune::TypeTree::lazy_evaluate::type</a></div><div class=\"ttdeci\">F::type type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:129</div></div>\n-<div class=\"ttc\" id=\"aa01544_html\"><div class=\"ttname\"><a href=\"a01544.html\">Dune::TypeTree::lazy_identity</a></div><div class=\"ttdoc\">Identity function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:135</div></div>\n-<div class=\"ttc\" id=\"aa01544_html_a4144fb6426f024627ed86c44480f17c7\"><div class=\"ttname\"><a href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\">Dune::TypeTree::lazy_identity::type</a></div><div class=\"ttdeci\">F type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:136</div></div>\n-<div class=\"ttc\" id=\"aa01548_html\"><div class=\"ttname\"><a href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function</a></div><div class=\"ttdoc\">Meta function that evaluates its argument iff it inherits from meta_function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:142</div></div>\n-<div class=\"ttc\" id=\"aa01548_html_a06a6cc811119a86e04828a84c0435588\"><div class=\"ttname\"><a href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\">Dune::TypeTree::evaluate_if_meta_function::type</a></div><div class=\"ttdeci\">std::conditional< std::is_base_of< meta_function, F >::value, lazy_evaluate< F >, lazy_identity< F > >::type::type type</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:147</div></div>\n+<div class=\"ttc\" id=\"aa01076_html\"><div class=\"ttname\"><a href=\"a01076.html\">Dune::TypeTree::CompositeNode</a></div><div class=\"ttdoc\">Base class for composite nodes based on variadic templates.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:28</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a20793f6f05dff40b6186875f6d2bb4b5\"><div class=\"ttname\"><a href=\"a01076.html#a20793f6f05dff40b6186875f6d2bb4b5\">Dune::TypeTree::CompositeNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:42</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a2852330b2a9ad24f832bc3a1b874e0fd\"><div class=\"ttname\"><a href=\"a01076.html#a2852330b2a9ad24f832bc3a1b874e0fd\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:166</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a3505fd1834fa9001a8b834c343b92d06\"><div class=\"ttname\"><a href=\"a01076.html#a3505fd1834fa9001a8b834c343b92d06\">Dune::TypeTree::CompositeNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:48</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a4303f12c98eb948a07556b8d78496145\"><div class=\"ttname\"><a href=\"a01076.html#a4303f12c98eb948a07556b8d78496145\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:214</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a4bd6f6ef27a411f2595c1bf80f5e61d0\"><div class=\"ttname\"><a href=\"a01076.html#a4bd6f6ef27a411f2595c1bf80f5e61d0\">Dune::TypeTree::CompositeNode::NodeTag</a></div><div class=\"ttdeci\">CompositeNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a CompositeNode.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:33</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a4ecf99c406a8b36caff5c72dee9e0f2e\"><div class=\"ttname\"><a href=\"a01076.html#a4ecf99c406a8b36caff5c72dee9e0f2e\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(typename Child< k >::Type &child, index_constant< k >={})</div><div class=\"ttdoc\">Sets the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a56bdcefacf70f43fceb78d3061cd7bd1\"><div class=\"ttname\"><a href=\"a01076.html#a56bdcefacf70f43fceb78d3061cd7bd1\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(typename Child< k >::Type &&child, index_constant< k >={})</div><div class=\"ttdoc\">Store the passed value in k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:120</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a66a12ee62cbcfb6ee613f825b1461228\"><div class=\"ttname\"><a href=\"a01076.html#a66a12ee62cbcfb6ee613f825b1461228\">Dune::TypeTree::CompositeNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:50</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a6f3ad1b12410641048471fc7f3baa4b4\"><div class=\"ttname\"><a href=\"a01076.html#a6f3ad1b12410641048471fc7f3baa4b4\">Dune::TypeTree::CompositeNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:132</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a79e473d935fd18eca3b562b5caade907\"><div class=\"ttname\"><a href=\"a01076.html#a79e473d935fd18eca3b562b5caade907\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode(std::shared_ptr< Children >... children)</div><div class=\"ttdoc\">Initialize the CompositeNode with copies of the passed in Storage objects.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:224</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a7fcd118083e76b077502ae253868f2f2\"><div class=\"ttname\"><a href=\"a01076.html#a7fcd118083e76b077502ae253868f2f2\">Dune::TypeTree::CompositeNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< typename Child< k >::Type > childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a90fa55292e12c492942fe9ae4c49e2b3\"><div class=\"ttname\"><a href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">Dune::TypeTree::CompositeNode::ChildTypes</a></div><div class=\"ttdeci\">std::tuple< Children... > ChildTypes</div><div class=\"ttdoc\">A tuple storing the types of all children.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:39</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_a96d4d4591ee88f50d15abb1c614125c7\"><div class=\"ttname\"><a href=\"a01076.html#a96d4d4591ee88f50d15abb1c614125c7\">Dune::TypeTree::CompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::shared_ptr< typename Child< k >::Type > child, index_constant< k >={})</div><div class=\"ttdoc\">Sets the storage of the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:127</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_aae633573b129d26649f8eaba6f064d16\"><div class=\"ttname\"><a href=\"a01076.html#aae633573b129d26649f8eaba6f064d16\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">const ImplementationDefined & child(Indices... indices)</div><div class=\"ttdoc\">Returns the child given by the list of indices.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:186</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_aaf8804e626ebc295192aad92fe6fbd9b\"><div class=\"ttname\"><a href=\"a01076.html#aaf8804e626ebc295192aad92fe6fbd9b\">Dune::TypeTree::CompositeNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:45</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_acca4a8c3b5a26fa702419b7dca1ccae2\"><div class=\"ttname\"><a href=\"a01076.html#acca4a8c3b5a26fa702419b7dca1ccae2\">Dune::TypeTree::CompositeNode::childStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const typename Child< k >::Type > childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_ad080a3581f2c584b86adb7b958afee8a\"><div class=\"ttname\"><a href=\"a01076.html#ad080a3581f2c584b86adb7b958afee8a\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">Child< k >::Type & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the k-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:76</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_adf98de7be2a2147694506ba60b43ea64\"><div class=\"ttname\"><a href=\"a01076.html#adf98de7be2a2147694506ba60b43ea64\">Dune::TypeTree::CompositeNode::CompositeNode</a></div><div class=\"ttdeci\">CompositeNode(const NodeStorage &children)</div><div class=\"ttdoc\">Initialize the CompositeNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:229</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_af0ff238501bae47af3572a6c02908aba\"><div class=\"ttname\"><a href=\"a01076.html#af0ff238501bae47af3572a6c02908aba\">Dune::TypeTree::CompositeNode::NodeStorage</a></div><div class=\"ttdeci\">std::tuple< std::shared_ptr< Children >... > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:36</div></div>\n+<div class=\"ttc\" id=\"aa01076_html_af80b4b009bba741f5845b5cb4bd3e7fa\"><div class=\"ttname\"><a href=\"a01076.html#af80b4b009bba741f5845b5cb4bd3e7fa\">Dune::TypeTree::CompositeNode::child</a></div><div class=\"ttdeci\">const Child< k >::Type & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:86</div></div>\n+<div class=\"ttc\" id=\"aa01080_html\"><div class=\"ttname\"><a href=\"a01080.html\">Dune::TypeTree::CompositeNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01080_html_a3d870db35b9da8565bba729babd2ce4c\"><div class=\"ttname\"><a href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\">Dune::TypeTree::CompositeNode::Child::Type</a></div><div class=\"ttdeci\">std::tuple_element< k, ChildTypes >::type Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:62</div></div>\n+<div class=\"ttc\" id=\"aa01080_html_abb5caac9e575a950957a989f847d1b51\"><div class=\"ttname\"><a href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">Dune::TypeTree::CompositeNode::Child::type</a></div><div class=\"ttdeci\">std::tuple_element< k, ChildTypes >::type type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> compositenode.hh:65</div></div>\n+<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n <div class=\"ttc\" id=\"aa01552_html\"><div class=\"ttname\"><a href=\"a01552.html\">Dune::TypeTree::IsTreePath</a></div><div class=\"ttdoc\">Check if type represents a tree path.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:184</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,346 +1,323 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-typetraits.hh\n+compositenode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TYPETRAITS_HH\n-7#define DUNE_TYPETREE_TYPETRAITS_HH\n+6#ifndef DUNE_TYPETREE_COMPOSITENODE_HH\n+7#define DUNE_TYPETREE_COMPOSITENODE_HH\n 8\n-9#include <type_traits>\n-10#include <dune/common/typetraits.hh>\n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be {\n+9#include <tuple>\n+10#include <memory>\n+11#include <type_traits>\n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n 16\n-17 // Provide some more C++11 TMP helpers.\n-18 // These should be upstreamed to dune-common ASAP.\n+17namespace _\bD_\bu_\bn_\be {\n+18 namespace TypeTree {\n 19\n-20 template<typename... T>\n-_\b2_\b1 struct _\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be;\n-22\n-23 template<typename T0, typename... T>\n-_\b2_\b4 struct _\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be<T0,T...>\n-25 {\n-_\b2_\b6 typedef T0 _\bt_\by_\bp_\be;\n-27 };\n-28\n-29 namespace TypeTree {\n-30\n-31 template<typename T>\n-_\b3_\b2 struct _\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg\n-33 {\n-_\b3_\b4 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[1]; };\n-_\b3_\b5 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[2]; };\n-36\n-37 template<typename X>\n-_\b3_\b8 static _\by_\be_\bs _\bt_\be_\bs_\bt(_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b> *);\n-39 template<typename X>\n-_\b4_\b0 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n-41\n-_\b4_\b3 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n-44 };\n-45\n-46 template<typename T, typename V>\n-_\b4_\b7 struct _\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n-48 {\n-49 template<int N>\n-_\b5_\b0 struct _\bm_\ba_\by_\bb_\be { char _\bd_\bu_\bm_\bm_\by[N+1]; };\n-_\b5_\b1 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[2]; };\n-_\b5_\b2 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[1]; };\n-53\n-54 template<typename X>\n-55 static _\bm_\ba_\by_\bb_\be_\b<_\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bV_\b,_\b _\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b>>_\b:_\b:_\bv_\ba_\bl_\bu_\be>\n-_\b5_\b6 _\bt_\be_\bs_\bt(_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bX_\b> * a);\n-57 template<typename X>\n-_\b5_\b8 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n-59\n-_\b6_\b1 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n-62 };\n+26 template<typename... Children>\n+_\b2_\b7 class _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+28 {\n+29\n+30 public:\n+31\n+_\b3_\b3 typedef _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+34\n+_\b3_\b6 typedef std::tuple<std::shared_ptr<Children>... > _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+37\n+_\b3_\b9 typedef std::tuple<Children...> _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n+40\n+_\b4_\b2 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n+43\n+_\b4_\b5 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n+46\n+_\b4_\b8 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = true;\n+49\n+_\b5_\b0 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n+51 {\n+52 return std::integral_constant<std::size_t,sizeof...(Children)>{};\n+53 }\n+54\n+56 template<std::size_t k>\n+_\b5_\b7 struct _\bC_\bh_\bi_\bl_\bd {\n+58\n+59 static_assert((k < _\bd_\be_\bg_\br_\be_\be()), \"child index out of range\");\n+60\n+_\b6_\b2 typedef typename std::tuple_element<k,ChildTypes>::type _\bT_\by_\bp_\be;\n 63\n-64 template<typename T>\n-_\b6_\b5 struct _\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg\n-66 {\n-_\b6_\b7 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[1]; };\n-_\b6_\b8 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[2]; };\n-69\n-70 template<typename X>\n-_\b7_\b1 static _\by_\be_\bs _\bt_\be_\bs_\bt(_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b> *);\n-72 template<typename X>\n-_\b7_\b3 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n-74\n-_\b7_\b6 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n-77 };\n-78\n-79 template<typename T, typename V>\n-_\b8_\b0 struct _\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n-81 {\n-82 template<int N>\n-_\b8_\b3 struct _\bm_\ba_\by_\bb_\be { char _\bd_\bu_\bm_\bm_\by[N+1]; };\n-_\b8_\b4 struct _\by_\be_\bs { char _\bd_\bu_\bm_\bm_\by[2]; };\n-_\b8_\b5 struct _\bn_\bo { char _\bd_\bu_\bm_\bm_\by[1]; };\n-86\n-87 template<typename X>\n-88 static _\bm_\ba_\by_\bb_\be_\b<_\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bV_\b,_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b>>_\b:_\b:_\bv_\ba_\bl_\bu_\be>\n-_\b8_\b9 _\bt_\be_\bs_\bt(_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg_\b<_\bX_\b> * a);\n-90 template<typename X>\n-_\b9_\b1 static _\bn_\bo _\bt_\be_\bs_\bt(...);\n+_\b6_\b5 typedef typename std::tuple_element<k,ChildTypes>::type _\bt_\by_\bp_\be;\n+66 };\n+67\n+70\n+72\n+75 template<std::size_t k>\n+_\b7_\b6 typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n+77 {\n+78 return *std::get<k>(_children);\n+79 }\n+80\n+82\n+85 template<std::size_t k>\n+_\b8_\b6 const typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n+87 {\n+88 return *std::get<k>(_children);\n+89 }\n+90\n 92\n-_\b9_\b4 constexpr static bool _\bv_\ba_\bl_\bu_\be = sizeof(test<T>(0)) == sizeof(_\by_\be_\bs);\n-95 };\n-96\n-97 template<typename>\n-_\b9_\b8 struct _\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd\n-99 {\n-_\b1_\b0_\b0 typedef void _\bt_\by_\bp_\be;\n-101 };\n+95 template<std::size_t k>\n+_\b9_\b6 std::shared_ptr<typename Child<k>::Type> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> =\n+{})\n+97 {\n+98 return std::get<k>(_children);\n+99 }\n+100\n 102\n-103\n-105 template<typename T>\n-_\b1_\b0_\b6 T* _\bd_\be_\bc_\bl_\bp_\bt_\br();\n-107\n-108\n-109 // Support for lazy evaluation of meta functions. This is required when\n-doing\n-110 // nested tag dispatch without C++11-style typedefs (based on using\n-syntax).\n-111 // The standard struct-based meta functions cause premature evaluation in a\n-112 // context that is not SFINAE-compatible. We thus have to return the meta\n-function\n-113 // without evaluating it, placing that burden on the caller. On the other\n-hand,\n-114 // the lookup will often directly be the target type, so here is some\n-helper code\n-115 // to automatically do the additional evaluation if necessary.\n-116 // Too bad that the new syntax is GCC 4.6+...\n+105 template<std::size_t k>\n+_\b1_\b0_\b6 std::shared_ptr<const typename Child<k>::Type> _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+(index_constant<k> = {}) const\n+107 {\n+108 return std::get<k>(_children);\n+109 }\n+110\n+112 template<std::size_t k>\n+_\b1_\b1_\b3 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd, index_constant<k> = {})\n+114 {\n+115 std::get<k>(_children) = stackobject_to_shared_ptr(_\bc_\bh_\bi_\bl_\bd);\n+116 }\n 117\n-118\n-120\n-_\b1_\b2_\b3 struct _\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn {};\n+119 template<std::size_t k>\n+_\b1_\b2_\b0 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be&& _\bc_\bh_\bi_\bl_\bd, index_constant<k> = {})\n+121 {\n+122 std::get<k>(_children) = convert_arg(std::move(_\bc_\bh_\bi_\bl_\bd));\n+123 }\n 124\n-126 template<typename F>\n-_\b1_\b2_\b7 struct _\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+126 template<std::size_t k>\n+_\b1_\b2_\b7 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::shared_ptr<typename _\bC_\bh_\bi_\bl_\bd_\b<_\bk_\b>_\b:_\b:_\bT_\by_\bp_\be> _\bc_\bh_\bi_\bl_\bd,\n+index_constant<k> = {})\n 128 {\n-_\b1_\b2_\b9 typedef typename F::type _\bt_\by_\bp_\be;\n-130 };\n+129 std::get<k>(_children) = std::move(_\bc_\bh_\bi_\bl_\bd);\n+130 }\n 131\n-133 template<typename F>\n-_\b1_\b3_\b4 struct _\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n-135 {\n-_\b1_\b3_\b6 typedef F _\bt_\by_\bp_\be;\n-137 };\n+_\b1_\b3_\b2 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+133 {\n+134 return _children;\n+135 }\n+136\n 138\n-140 template<typename F>\n-_\b1_\b4_\b1 struct _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-142 {\n-143 typedef typename std::conditional<\n-144 std::is_base_of<meta_function,F>::value,\n-145 _\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bF_\b>,\n-146 _\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b<_\bF_\b>\n-_\b1_\b4_\b7 >::type::type _\bt_\by_\bp_\be;\n-148 };\n-149\n-_\b1_\b5_\b0 namespace impl {\n-151\n-152 // Check if type is a or is derived from one of the tree path types\n-153\n-154 // Default overload for types not representing a tree path\n-_\b1_\b5_\b5 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(void*)\n-156 -> std::false_type\n-157 {\n-158 return std::false_type();\n-159 }\n+141\n+142 // The following two methods require a little bit of SFINAE trickery to\n+work correctly:\n+143 // We have to make sure that they don't shadow the methods for direct child\n+access because\n+144 // those get called by the generic child() machinery. If that machinery\n+picks up the methods\n+145 // defined below, we have an infinite recursion.\n+146 // So the methods make sure that either\n+147 //\n+148 // * there are more than one argument. In that case, we got multiple\n+indices and can forward\n+149 // to the general machine.\n+150 //\n+151 // * the first argument is not a valid flat index, i.e. either a std::\n+size_t or an index_constant.\n+152 // The argument thus has to be some kind of TreePath instance that we can\n+also pass to the\n+153 // generic machine.\n+154 //\n+155 // The above SFINAE logic works, but there is still a problem with the\n+return type deduction.\n+156 // We have to do a lazy lookup of the return type after SFINAE has\n+succeeded, otherwise the return\n+157 // type deduction will trigger the infinite recursion.\n+158\n 160\n-161 // Overload for instances of HybridTreePath<...>\n-162 template<class... I>\n-_\b1_\b6_\b3 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b._\b._\b._\b>*)\n-164 -> std::true_type\n-165 {\n-166 return std::true_type();\n-167 }\n-168\n-169 }\n-170\n-181 template<class T>\n-_\b1_\b8_\b2 struct _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh :\n-183 public decltype(impl::isTreePath((typename std::decay<T>::type*)(nullptr)))\n-184 {};\n-185\n-192 template<class T>\n-_\b1_\b9_\b3 constexpr auto _\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T&)\n-194 -> _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b>\n-195 {\n-196 return _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b>();\n+164#ifdef DOXYGEN\n+165 template<typename... Indices>\n+_\b1_\b6_\b6 ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n+167#else\n+168 template<typename I0, typename... I,\n+169 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n+170 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i)\n+171#endif\n+172 {\n+173 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n+174 \"You cannot use the member function child() with an empty TreePath, use the\n+freestanding version child(node,treePath) instead.\"\n+175 );\n+176 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n+177 }\n+178\n+180\n+184#ifdef DOXYGEN\n+185 template<typename... Indices>\n+_\b1_\b8_\b6 const ImplementationDefined& _\bc_\bh_\bi_\bl_\bd (Indices... indices)\n+187#else\n+188 template<typename I0, typename... I,\n+189 std::enable_if_t<(sizeof...(I) > 0) || _\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\b0_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be, int > = 0>\n+190 decltype(auto) _\bc_\bh_\bi_\bl_\bd (I0 i0, I... i) const\n+191#endif\n+192 {\n+193 static_assert(sizeof...(I) > 0 || impl::_non_empty_tree_path(I0{}),\n+194 \"You cannot use the member function child() with an empty TreePath, use the\n+freestanding version child(node,treePath) instead.\"\n+195 );\n+196 return _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd(*this,i0,i...);\n 197 }\n 198\n-199\n-200 } // end namespace TypeTree\n-201} // end namespace Dune\n+200\n+201 protected:\n 202\n-203#endif // DUNE_TYPETREE_TYPETRAITS_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-typename std::decay_t< Node >::NodeTag NodeTag\n-Returns the node tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg\n-typename std::decay_t< T >::ImplementationTag ImplementationTag\n-Returns the implementation tag of the given Node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:74\n+205\n+207\n+_\b2_\b1_\b4 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be ()\n+215 {}\n+216\n+218 template<typename... Args, typename = typename std::enable_if<(sizeof...\n+(Args) == _\bd_\be_\bg_\br_\be_\be())>::type>\n+_\b2_\b1_\b9 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (Args&&... args)\n+220 : _children(convert_arg(std::forward<Args>(args))...)\n+221 {}\n+222\n+_\b2_\b2_\b4 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n+225 : _children(std::move(children)...)\n+226 {}\n+227\n+_\b2_\b2_\b9 _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& children)\n+230 : _children(children)\n+231 {}\n+232\n+234\n+235 private:\n+236 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n+237 };\n+238\n+240\n+241 } // namespace TypeTree\n+242} //namespace Dune\n+243\n+244#endif // DUNE_TYPETREE_COMPOSITENODE_HH\n+_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto isTreePath(const T &) -> IsTreePath< T >\n-Check if given object represents a tree path.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bc_\bl_\bp_\bt_\br\n-T * declptr()\n-Helper function for generating a pointer to a value of type T in an unevaluated\n-operand setting.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bm_\bp_\bl_\b:_\b:_\bi_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto isTreePath(void *) -> std::false_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-A hybrid version of TreePath that supports both compile time and run time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\br_\bs_\bt_\b__\bt_\by_\bp_\be_\b<_\b _\bT_\b0_\b,_\b _\bT_\b._\b._\b._\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-T0 type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static constexpr bool value\n-True if class T defines a NodeTag.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n-static yes test(NodeTag< X > *)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n-static no test(...)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[2]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n-static maybe< std::is_base_of< V, NodeTag< X > >::value > test(NodeTag< X > *a)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static constexpr bool value\n-True if class T defines a NodeTag of type V.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n-static no test(...)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[N+1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[2]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bo_\bd_\be_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n-static yes test(ImplementationTag< X > *)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bt_\be_\bs_\bt\n-static no test(...)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static constexpr bool value\n-True if class T defines an ImplementationTag.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[2]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n-static maybe< std::is_base_of< V, ImplementationTag< X > >::value > test\n-(ImplementationTag< X > *a)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bt_\be_\bs_\bt\n-static no test(...)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static constexpr bool value\n-True if class T defines an ImplementationTag of type V.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bm_\ba_\by_\bb_\be_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[N+1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\by_\be_\bs_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[2]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\ba_\bs_\b__\bi_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt_\ba_\bg_\b__\bv_\ba_\bl_\bu_\be_\b:_\b:_\bn_\bo_\b:_\b:_\bd_\bu_\bm_\bm_\by\n-char dummy[1]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bl_\bw_\ba_\by_\bs_\bV_\bo_\bi_\bd_\b:_\b:_\bt_\by_\bp_\be\n-void type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Marker tag declaring a meta function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-Helper meta function to delay evaluation of F.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\bt_\by_\bp_\be\n-F::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n-Identity function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\ba_\bz_\by_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n-F type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Meta function that evaluates its argument iff it inherits from meta_function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n-std::conditional< std::is_base_of< meta_function, F >::value, lazy_evaluate< F\n->, lazy_identity< F > >::type::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+Base class for composite nodes based on variadic templates.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Mark this class as non leaf in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined & child(Indices... indices)\n+Returns the child given by the list of indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+CompositeNode()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+CompositeNodeTag NodeTag\n+The type tag that describes a CompositeNode.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(typename Child< k >::Type &child, index_constant< k >={})\n+Sets the k-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(typename Child< k >::Type &&child, index_constant< k >={})\n+Store the passed value in k-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static constexpr auto degree()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+const NodeStorage & nodeStorage() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+CompositeNode(std::shared_ptr< Children >... children)\n+Initialize the CompositeNode with copies of the passed in Storage objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< typename Child< k >::Type > childStorage(index_constant< k >=\n+{})\n+Returns the storage of the k-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n+std::tuple< Children... > ChildTypes\n+A tuple storing the types of all children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::shared_ptr< typename Child< k >::Type > child,\n+index_constant< k >={})\n+Sets the storage of the k-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const ImplementationDefined & child(Indices... indices)\n+Returns the child given by the list of indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+static const bool isPower\n+Mark this class as a non power in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< const typename Child< k >::Type > childStorage(index_constant<\n+k >={}) const\n+Returns the storage of the k-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+Child< k >::Type & child(index_constant< k >={})\n+Returns the k-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+CompositeNode(const NodeStorage &children)\n+Initialize the CompositeNode with a copy of the passed-in storage type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::tuple< std::shared_ptr< Children >... > NodeStorage\n+The type used for storing the children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const Child< k >::Type & child(index_constant< k >={}) const\n+Returns the k-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+Access to the type and storage type of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n+std::tuple_element< k, ChildTypes >::type Type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n+std::tuple_element< k, ChildTypes >::type type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn compositenode.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a composite node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bs_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n Check if type represents a tree path.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:184\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00047.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00047.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: utility.hh File Reference</title>\n+<title>dune-typetree: filters.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,33 +72,61 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">utility.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">filters.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <memory></code><br />\n-<code>#include <tuple></code><br />\n-<code>#include <type_traits></code><br />\n-<code>#include <utility></code><br />\n-<code>#include <algorithm></code><br />\n-<code>#include <dune/common/shared_ptr.hh></code><br />\n-<code>#include <dune/common/indices.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <tuple></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n </div>\n <p><a href=\"a00047_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01556.html\">Dune::TypeTree::TreeInfo< Tree, Tag ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Struct for obtaining some basic structural information about a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01556.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01104.html\">Dune::TypeTree::FilterEntry< new_k, old_k ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">A filter entry describing the mapping of one child in the filtered node. <a href=\"a01104.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01108.html\">Dune::TypeTree::FilterResult< FilterEntries ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The result of a filter. <a href=\"a01108.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01112.html\">Dune::TypeTree::FilterResult< FilterEntries >::apply< Node ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01116.html\">Dune::TypeTree::SimpleFilterTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag describing a simple filter that can only decide whether or not to include a single given child. <a href=\"a01116.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01120.html\">Dune::TypeTree::AdvancedFilterTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag describing an advanced filter that has full control over the construction of the list of FilterEntries. <a href=\"a01120.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01124.html\">Dune::TypeTree::AdvancedFilter</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for advanced filters. <a href=\"a01124.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01128.html\">Dune::TypeTree::AdvancedFilter::apply< Node, Children ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply this filter to the given node and children. <a href=\"a01128.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01132.html\">Dune::TypeTree::SimpleFilter</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Default simple filter that accepts any node and leaves its child structure unchanged. <a href=\"a01132.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01136.html\">Dune::TypeTree::SimpleFilter::validate< Node ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Validates the combination of filter and node. <a href=\"a01136.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01140.html\">Dune::TypeTree::SimpleFilter::apply< Child, new_index, old_index ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Applies the filter to the given child node. <a href=\"a01140.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01160.html\">Dune::TypeTree::IndexFilter< indices ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Filter class for <a class=\"el\" href=\"a01092.html\" title=\"Base class for composite nodes representing a filtered view on an underlying composite node.\">FilteredCompositeNode</a> that selects the children with the given indices. <a href=\"a01160.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01180.html\">Dune::TypeTree::filter< Filter ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Adapter class that takes a <a class=\"el\" href=\"a01132.html\" title=\"Default simple filter that accepts any node and leaves its child structure unchanged.\">SimpleFilter</a>, validated it and turns it into an <a class=\"el\" href=\"a01124.html\" title=\"Base class for advanced filters.\">AdvancedFilter</a>. <a href=\"a01180.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01184.html\">Dune::TypeTree::filter< Filter >::apply< Node, Children ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply the filter. <a href=\"a01184.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,62 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-utility.hh File Reference\n-#include <memory>\n+filters.hh File Reference\n #include <tuple>\n-#include <type_traits>\n-#include <utility>\n-#include <algorithm>\n-#include <dune/common/shared_ptr.hh>\n-#include <dune/common/indices.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <dune/common/typetraits.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b<_\b _\bT_\br_\be_\be_\b,_\b _\bT_\ba_\bg_\b _\b>\n-\u00a0 Struct for obtaining some basic structural information about a\n- _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by_\b<_\b _\bn_\be_\bw_\b__\bk_\b,_\b _\bo_\bl_\bd_\b__\bk_\b _\b>\n+\u00a0 A filter entry describing the mapping of one child in the filtered\n+ node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\bi_\be_\bs_\b _\b>\n+\u00a0 The result of a filter. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\bi_\be_\bs_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+\u00a0 Tag describing a simple filter that can only decide whether or not to\n+ include a single given child. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+\u00a0 Tag describing an advanced filter that has full control over the\n+ construction of the list of FilterEntries. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n+\u00a0 Base class for advanced filters. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n+\u00a0 Apply this filter to the given node and children. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n+\u00a0 Default simple filter that accepts any node and leaves its child\n+ structure unchanged. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n+\u00a0 Validates the combination of filter and node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bC_\bh_\bi_\bl_\bd_\b,_\b _\bn_\be_\bw_\b__\bi_\bn_\bd_\be_\bx_\b,_\b _\bo_\bl_\bd_\b__\bi_\bn_\bd_\be_\bx_\b _\b>\n+\u00a0 Applies the filter to the given child node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bi_\bn_\bd_\bi_\bc_\be_\bs_\b _\b>\n+\u00a0 Filter class for _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be that selects the children with\n+ the given indices. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>\n+\u00a0 Adapter class that takes a _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br, validated it and turns it\n+ into an _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n+\u00a0 Apply the filter. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00047_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00047_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: utility.hh Source File</title>\n+<title>dune-typetree: filters.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,236 +74,261 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">utility.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">filters.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00047.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_UTILITY_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_UTILITY_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FILTERS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FILTERS_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <utility></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <algorithm></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> std::shared_ptr<T> convert_arg(<span class=\"keyword\">const</span> T& t)</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keywordflow\">return</span> std::make_shared<T>(t);</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> }</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <tuple></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> new_k, std::<span class=\"keywordtype\">size_t</span> old_k></div>\n+<div class=\"foldopen\" id=\"foldopen00023\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01104.html\"> 23</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01104.html\">FilterEntry</a></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> {</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"comment\">// The precise contents of this class is an implementation detail.</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t filtered_index = new_k;</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t original_index = old_k;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> std::shared_ptr<T> convert_arg(T& t)</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keywordflow\">return</span> stackobject_to_shared_ptr(t);</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> }</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> BaseType, <span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> T& assertGridViewType(T& t)</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> <span class=\"keyword\">static_assert</span>((std::is_same<<span class=\"keyword\">typename</span> BaseType::Traits::GridViewType,</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">typename</span> T::Traits::GridViewType>::value),</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"stringliteral\">"GridViewType must be equal in all components of composite type"</span>);</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> t;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> }</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// only bind to real rvalues</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">typename</span> std::enable_if<!std::is_lvalue_reference<T>::value,std::shared_ptr<T> >::type convert_arg(T&& t)</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keywordflow\">return</span> std::make_shared<T>(std::forward<T>(t));</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> }</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">namespace </span>Experimental {</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> BinaryOp, <span class=\"keyword\">class</span> Arg></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>)</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> left_fold(<span class=\"keyword\">const</span> BinaryOp& binary_op, Arg&& arg)</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> {</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keywordflow\">return</span> std::forward<Arg>(arg);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> }</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>BinaryOp, <span class=\"keyword\">class </span>Init, <span class=\"keyword\">class </span>Arg0, <span class=\"keyword\">class</span>... Args></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>)</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> left_fold(<span class=\"keyword\">const</span> BinaryOp& binary_op, Init&& init, Arg0&& arg_0, Args&&... args)</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> {</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keywordflow\">return</span> left_fold(</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> binary_op,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> binary_op(std::forward<Init>(init), std::forward<Arg0>(arg_0)),</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> std::forward<Args>(args)...);</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> }</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> } <span class=\"comment\">// namespace Experimental</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html\"> 39</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\">size</a> = <span class=\"keyword\">sizeof</span>...(FilterEntries);</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\"> 44</a></span> <span class=\"keyword\">typedef</span> std::tuple<FilterEntries...> <a class=\"code hl_typedef\" href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\">IndexMap</a>;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html\"> 47</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01112.html\">apply</a></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\"> 49</a></span> <span class=\"keyword\">typedef</span> std::tuple<typename Node::template Child<FilterEntries::original_index>...> <a class=\"code hl_typedef\" href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\">Children</a>;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\"> 50</a></span> <span class=\"keyword\">typedef</span> std::tuple<typename Node::template Child<FilterEntries::original_index>::Type...> <a class=\"code hl_typedef\" href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\">ChildTypes</a>;</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\"> 51</a></span> <span class=\"keyword\">typedef</span> std::tuple<std::shared_ptr<typename Node::template Child<FilterEntries::original_index>::Type>...> <a class=\"code hl_typedef\" href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01116.html\"> 57</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01116.html\">SimpleFilterTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01120.html\"> 60</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01120.html\">AdvancedFilterTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00064\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01124.html\"> 64</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01124.html\">AdvancedFilter</a></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> {</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\"> 68</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01120.html\">AdvancedFilterTag</a> <a class=\"code hl_typedef\" href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\">FilterTag</a>;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n+<div class=\"foldopen\" id=\"foldopen00074\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01128.html\"> 74</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01128.html\">apply</a></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> {</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\"> 80</a></span> <span class=\"keyword\">typedef</span> implementation-defined <a class=\"code hl_typedef\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01132.html\"> 93</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01132.html\">SimpleFilter</a></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> {</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\"> 97</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01116.html\">SimpleFilterTag</a> <a class=\"code hl_typedef\" href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\">FilterTag</a>;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01136.html\"> 102</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01136.html\">validate</a></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\"> 105</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\">value</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> };</div>\n+</div>\n <div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Tag = StartTag></div>\n-<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html\"> 120</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo</a></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> {</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"comment\">// Start the tree traversal</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo<Tree,NodeTag<Tree></a>> <a class=\"code hl_struct\" href=\"a01556.html\">NodeInfo</a>;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\"> 130</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">NodeInfo::depth</a>;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child, std::<span class=\"keywordtype\">size_t</span> new_index, std::<span class=\"keywordtype\">size_t</span> old_index></div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01140.html\"> 118</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01140.html\">apply</a></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\"> 121</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\">value</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"comment\">// IndexFilter helpers</span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"comment\">// ********************************************************************************</span></div>\n <div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\"> 133</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">NodeInfo::nodeCount</a>;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\"> 136</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">NodeInfo::leafCount</a>;</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"comment\">// TreeInfo specializations for the different node types</span></div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"comment\">// leaf node</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01556.html\">TreeInfo</a><Node,<a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a>></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = 1;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = 1;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t new_index, std::size_t... indices></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">struct </span>index_filter_helper</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> {</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> {</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a><FilterEntries...> type;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> };</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> };</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t new_index, std::size_t old_index, std::size_t... indices></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">struct </span>index_filter_helper<Node,new_index,old_index,indices...></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> {</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> : <span class=\"keyword\">public</span> index_filter_helper<Node,new_index+1,indices...>::template apply<FilterEntries...,</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> FilterEntry<new_index,</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> old_index></div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> ></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {};</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> };</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n <div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = 1;</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> };</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// power node - exploit the fact that all children are identical</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keyword\">struct </span>TreeInfo<Node,PowerNodeTag></div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">typedef</span> TreeInfo<typename Node::ChildType,NodeTag<typename Node::ChildType>> ChildInfo;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = 1 + ChildInfo::depth;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keyword\">template</span><std::size_t... indices></div>\n+<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01160.html\"> 159</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01160.html\">IndexFilter</a></div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01124.html\">AdvancedFilter</a></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01128.html\">apply</a></div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> index_filter_helper<Node,0,indices...>::template <a class=\"code hl_struct\" href=\"a01128.html\">apply<>::type</a> <a class=\"code hl_typedef\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> };</div>\n <div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = 1 + StaticDegree<Node>::value * ChildInfo::nodeCount;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">leafCount</a> = StaticDegree<Node>::value * ChildInfo::leafCount;</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> };</div>\n+</div>\n <div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> };</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// TMP for iterating over the children of a composite node</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"comment\">// identical for both composite node implementations</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::<span class=\"keywordtype\">size_t</span> k, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">struct </span>generic_compositenode_children_info</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> {</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">typedef</span> generic_compositenode_children_info<Node,k+1,n> NextChild;</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"comment\">// extract child info</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::template Child<k>::Type Child;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <span class=\"keyword\">typedef</span> NodeTag<Child> ChildTag;</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> <span class=\"keyword\">typedef</span> TreeInfo<Child,ChildTag> ChildInfo;</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"comment\">// filter: Wrapper class for turning a simple filter into an advanced filter</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"comment\">// usable by FilteredCompositeNode</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, std::size_t new_k, std::size_t old_k, <span class=\"keyword\">typename</span>... tail></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keyword\">struct </span>filter_helper</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> {</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterDescriptors></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a><FilterDescriptors...> type;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> };</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> };</div>\n <div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"comment\">// combine information of current child with info about following children</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t maxDepth = ChildInfo::depth > NextChild::maxDepth ? ChildInfo::depth : NextChild::maxDepth;</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t nodeCount = ChildInfo::nodeCount + NextChild::nodeCount;</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> </div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t leafCount = ChildInfo::leafCount + NextChild::leafCount;</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> };</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> <span class=\"comment\">// End of recursion</span></div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::<span class=\"keywordtype\">size_t</span> n></div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">struct </span>generic_compositenode_children_info<Node,n,n></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t maxDepth = 0;</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a> = 0;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a> = 0;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> };</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> </div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"comment\">// Struct for building information about composite node</span></div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keyword\">struct </span>GenericCompositeNodeInfo</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> {</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, std::size_t new_k, std::size_t old_k, <span class=\"keyword\">typename</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <span class=\"keyword\">typename</span>... tail></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">struct </span>filter_helper<Filter,new_k,old_k,<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>,tail...></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> {</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterDescriptors></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> : <span class=\"keyword\">public</span> std::conditional<Filter::template apply<child,new_k,old_k>::value,</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> typename filter_helper<Filter,new_k+1,old_k+1,tail...>::template apply<FilterDescriptors...,FilterEntry<new_k,old_k> >,</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> typename filter_helper<Filter,new_k,old_k+1,tail...>::template apply<FilterDescriptors...></div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> >::type</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> {};</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> };</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n+<div class=\"foldopen\" id=\"foldopen00211\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01180.html\"> 211</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01180.html\">filter</a></div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> {</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n+<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01184.html\"> 216</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01184.html\">apply</a></div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">static_assert</span>((Filter::template validate<Node>::value),<span class=\"stringliteral\">"Invalid simple filter"</span>);</div>\n <div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> <span class=\"keyword\">typedef</span> generic_compositenode_children_info<Node,0,StaticDegree<Node>::value> Children;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\"> 221</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter_helper<Filter,0,0,Children...>::template <a class=\"code hl_typedef\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">apply<>::type</a> <a class=\"code hl_typedef\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">type</a>;</div>\n <div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">depth</a> = 1 + Children::maxDepth;</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> };</div>\n+</div>\n <div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a> = 1 + Children::nodeCount;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> };</div>\n+</div>\n <div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a> = Children::leafCount;</div>\n <div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> };</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span>} <span class=\"comment\">//namespace Dune</span></div>\n <div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> <span class=\"comment\">// CompositeNode: delegate to GenericCompositeNodeInfo</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keyword\">struct </span>TreeInfo<Node,CompositeNodeTag></div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> : <span class=\"keyword\">public</span> GenericCompositeNodeInfo<Node></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> {};</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keyword\">using </span>Dune::index_constant;</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> <span class=\"keyword\">namespace </span>Indices = Dune::Indices;</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> </div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> </div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_UTILITY_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FILTERS_HH</span></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a53a6ba5f914d4da3ba5ff80408f21163\"><div class=\"ttname\"><a href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a></div><div class=\"ttdeci\">auto leafCount(const Tree &tree)</div><div class=\"ttdoc\">The number of leaf nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:532</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a5785c6c18fde92f5bff32c3096f8a00d\"><div class=\"ttname\"><a href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a></div><div class=\"ttdeci\">auto nodeCount(const Tree &tree)</div><div class=\"ttdoc\">The total number of nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:524</div></div>\n-<div class=\"ttc\" id=\"aa00108_html_a7ab47599182e64eb1cfc8d73ccf87c3c\"><div class=\"ttname\"><a href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">Dune::TypeTree::Experimental::Info::depth</a></div><div class=\"ttdeci\">auto depth(const Tree &tree)</div><div class=\"ttdoc\">The depth of the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:508</div></div>\n-<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n-<div class=\"ttc\" id=\"aa01556_html\"><div class=\"ttname\"><a href=\"a01556.html\">Dune::TypeTree::TreeInfo</a></div><div class=\"ttdoc\">Struct for obtaining some basic structural information about a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:121</div></div>\n-<div class=\"ttc\" id=\"aa01556_html_a11e15acb63ccfb67ca7093ff153013ec\"><div class=\"ttname\"><a href=\"a01556.html#a11e15acb63ccfb67ca7093ff153013ec\">Dune::TypeTree::TreeInfo::leafCount</a></div><div class=\"ttdeci\">static const std::size_t leafCount</div><div class=\"ttdoc\">The number of leaf nodes in the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:136</div></div>\n-<div class=\"ttc\" id=\"aa01556_html_a57865e1039b7173227a68ace3595af99\"><div class=\"ttname\"><a href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">Dune::TypeTree::TreeInfo::depth</a></div><div class=\"ttdeci\">static const std::size_t depth</div><div class=\"ttdoc\">The depth of the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:130</div></div>\n-<div class=\"ttc\" id=\"aa01556_html_af40f1e154afb15491116809ef2245b4c\"><div class=\"ttname\"><a href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">Dune::TypeTree::TreeInfo::nodeCount</a></div><div class=\"ttdeci\">static const std::size_t nodeCount</div><div class=\"ttdoc\">The total number of nodes in the TypeTree.</div><div class=\"ttdef\"><b>Definition</b> utility.hh:133</div></div>\n+<div class=\"ttc\" id=\"aa01104_html\"><div class=\"ttname\"><a href=\"a01104.html\">Dune::TypeTree::FilterEntry</a></div><div class=\"ttdoc\">A filter entry describing the mapping of one child in the filtered node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:24</div></div>\n+<div class=\"ttc\" id=\"aa01108_html\"><div class=\"ttname\"><a href=\"a01108.html\">Dune::TypeTree::FilterResult</a></div><div class=\"ttdoc\">The result of a filter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01108_html_a4a8e3649ff2e1c91ec7944dd1ea460d5\"><div class=\"ttname\"><a href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\">Dune::TypeTree::FilterResult::IndexMap</a></div><div class=\"ttdeci\">std::tuple< FilterEntries... > IndexMap</div><div class=\"ttdef\"><b>Definition</b> filters.hh:44</div></div>\n+<div class=\"ttc\" id=\"aa01108_html_af0d63cc663fd5c6c47c6c8f3dce247bf\"><div class=\"ttname\"><a href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\">Dune::TypeTree::FilterResult::size</a></div><div class=\"ttdeci\">static const std::size_t size</div><div class=\"ttdef\"><b>Definition</b> filters.hh:42</div></div>\n+<div class=\"ttc\" id=\"aa01112_html\"><div class=\"ttname\"><a href=\"a01112.html\">Dune::TypeTree::FilterResult::apply</a></div><div class=\"ttdef\"><b>Definition</b> filters.hh:48</div></div>\n+<div class=\"ttc\" id=\"aa01112_html_a39b9a66f186fdd286f5c12838c2c811b\"><div class=\"ttname\"><a href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\">Dune::TypeTree::FilterResult::apply::Children</a></div><div class=\"ttdeci\">std::tuple< typename Node::template Child< FilterEntries::original_index >... > Children</div><div class=\"ttdef\"><b>Definition</b> filters.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa01112_html_ae1aa70004391c42ab3be2b7163ed0d0f\"><div class=\"ttname\"><a href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\">Dune::TypeTree::FilterResult::apply::ChildTypes</a></div><div class=\"ttdeci\">std::tuple< typename Node::template Child< FilterEntries::original_index >::Type... > ChildTypes</div><div class=\"ttdef\"><b>Definition</b> filters.hh:50</div></div>\n+<div class=\"ttc\" id=\"aa01112_html_ae684495ec8a65a094065d41c64ff841e\"><div class=\"ttname\"><a href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\">Dune::TypeTree::FilterResult::apply::NodeStorage</a></div><div class=\"ttdeci\">std::tuple< std::shared_ptr< typename Node::template Child< FilterEntries::original_index >::Type >... > NodeStorage</div><div class=\"ttdef\"><b>Definition</b> filters.hh:51</div></div>\n+<div class=\"ttc\" id=\"aa01116_html\"><div class=\"ttname\"><a href=\"a01116.html\">Dune::TypeTree::SimpleFilterTag</a></div><div class=\"ttdoc\">Tag describing a simple filter that can only decide whether or not to include a single given child.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01120_html\"><div class=\"ttname\"><a href=\"a01120.html\">Dune::TypeTree::AdvancedFilterTag</a></div><div class=\"ttdoc\">Tag describing an advanced filter that has full control over the construction of the list of FilterEn...</div><div class=\"ttdef\"><b>Definition</b> filters.hh:60</div></div>\n+<div class=\"ttc\" id=\"aa01124_html\"><div class=\"ttname\"><a href=\"a01124.html\">Dune::TypeTree::AdvancedFilter</a></div><div class=\"ttdoc\">Base class for advanced filters.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:65</div></div>\n+<div class=\"ttc\" id=\"aa01124_html_a4fd8c754cfcb1eb9eedf19dd8710db94\"><div class=\"ttname\"><a href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\">Dune::TypeTree::AdvancedFilter::FilterTag</a></div><div class=\"ttdeci\">AdvancedFilterTag FilterTag</div><div class=\"ttdoc\">Filter tag for deciding on filter application mechanism.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:68</div></div>\n+<div class=\"ttc\" id=\"aa01128_html\"><div class=\"ttname\"><a href=\"a01128.html\">Dune::TypeTree::AdvancedFilter::apply</a></div><div class=\"ttdoc\">Apply this filter to the given node and children.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:75</div></div>\n+<div class=\"ttc\" id=\"aa01128_html_a034c4aa57e11832b7ca8fd75ae511ec3\"><div class=\"ttname\"><a href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">Dune::TypeTree::AdvancedFilter::apply::type</a></div><div class=\"ttdeci\">implementation defined type</div><div class=\"ttdoc\">The result of the filtering process.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:80</div></div>\n+<div class=\"ttc\" id=\"aa01132_html\"><div class=\"ttname\"><a href=\"a01132.html\">Dune::TypeTree::SimpleFilter</a></div><div class=\"ttdoc\">Default simple filter that accepts any node and leaves its child structure unchanged.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:94</div></div>\n+<div class=\"ttc\" id=\"aa01132_html_ae67f1c40828cfb2622d0a9bac6737410\"><div class=\"ttname\"><a href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\">Dune::TypeTree::SimpleFilter::FilterTag</a></div><div class=\"ttdeci\">SimpleFilterTag FilterTag</div><div class=\"ttdoc\">Filter tag for deciding on filter application mechanism.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:97</div></div>\n+<div class=\"ttc\" id=\"aa01136_html\"><div class=\"ttname\"><a href=\"a01136.html\">Dune::TypeTree::SimpleFilter::validate</a></div><div class=\"ttdoc\">Validates the combination of filter and node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:103</div></div>\n+<div class=\"ttc\" id=\"aa01136_html_a5c66acd334e0cb097ee1c4f652ed6139\"><div class=\"ttname\"><a href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\">Dune::TypeTree::SimpleFilter::validate::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">True if the combination of filter and node is valid.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:105</div></div>\n+<div class=\"ttc\" id=\"aa01140_html\"><div class=\"ttname\"><a href=\"a01140.html\">Dune::TypeTree::SimpleFilter::apply</a></div><div class=\"ttdoc\">Applies the filter to the given child node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:119</div></div>\n+<div class=\"ttc\" id=\"aa01140_html_a1898f545f2bf84b28e34415c00276770\"><div class=\"ttname\"><a href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\">Dune::TypeTree::SimpleFilter::apply::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">True if the child will be included in the filtered node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:121</div></div>\n+<div class=\"ttc\" id=\"aa01160_html\"><div class=\"ttname\"><a href=\"a01160.html\">Dune::TypeTree::IndexFilter</a></div><div class=\"ttdoc\">Filter class for FilteredCompositeNode that selects the children with the given indices.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:161</div></div>\n+<div class=\"ttc\" id=\"aa01180_html\"><div class=\"ttname\"><a href=\"a01180.html\">Dune::TypeTree::filter</a></div><div class=\"ttdoc\">Adapter class that takes a SimpleFilter, validated it and turns it into an AdvancedFilter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:212</div></div>\n+<div class=\"ttc\" id=\"aa01184_html\"><div class=\"ttname\"><a href=\"a01184.html\">Dune::TypeTree::filter::apply</a></div><div class=\"ttdoc\">Apply the filter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:217</div></div>\n+<div class=\"ttc\" id=\"aa01184_html_ac0c6d8d73084c07bc88660811465a8d4\"><div class=\"ttname\"><a href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">Dune::TypeTree::filter::apply::type</a></div><div class=\"ttdeci\">filter_helper< Filter, 0, 0, Children... >::template apply ::type type</div><div class=\"ttdef\"><b>Definition</b> filters.hh:221</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,265 +1,320 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-utility.hh\n+filters.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_UTILITY_HH\n-7#define DUNE_TYPETREE_UTILITY_HH\n+6#ifndef DUNE_TYPETREE_FILTERS_HH\n+7#define DUNE_TYPETREE_FILTERS_HH\n 8\n-9#include <memory>\n-10#include <tuple>\n-11#include <type_traits>\n-12#include <utility>\n-13#include <algorithm>\n-14\n-15#include <dune/common/shared_ptr.hh>\n-16#include <dune/common/indices.hh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be {\n-21 namespace TypeTree {\n-22\n-27#ifndef DOXYGEN\n-28\n-29 template<typename T>\n-30 std::shared_ptr<T> convert_arg(const T& t)\n-31 {\n-32 return std::make_shared<T>(t);\n-33 }\n+9#include <tuple>\n+10\n+11#include <dune/common/typetraits.hh>\n+12\n+13namespace _\bD_\bu_\bn_\be {\n+14 namespace TypeTree {\n+15\n+22 template<std::size_t new_k, std::size_t old_k>\n+_\b2_\b3 struct _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by\n+24 {\n+25\n+26#ifndef DOXYGEN\n+27\n+28 // The precise contents of this class is an implementation detail.\n+29\n+30 static const std::size_t filtered_index = new_k;\n+31 static const std::size_t original_index = old_k;\n+32\n+33#endif // DOXYGEN\n 34\n-35 template<typename T>\n-36 std::shared_ptr<T> convert_arg(T& t)\n-37 {\n-38 return stackobject_to_shared_ptr(t);\n-39 }\n-40\n-41 template<typename BaseType, typename T>\n-42 T& assertGridViewType(T& t)\n-43 {\n-44 static_assert((std::is_same<typename BaseType::Traits::GridViewType,\n-45 typename T::Traits::GridViewType>::value),\n-46 \"GridViewType must be equal in all components of composite type\");\n-47 return t;\n-48 }\n-49\n-50 // only bind to real rvalues\n-51 template<typename T>\n-52 typename std::enable_if<!std::is_lvalue_reference<T>::value,std::\n-shared_ptr<T> >::type convert_arg(T&& t)\n-53 {\n-54 return std::make_shared<T>(std::forward<T>(t));\n-55 }\n-56\n-57\n-58 namespace Experimental {\n-59\n-68 template<class BinaryOp, class Arg>\n-69 constexpr decltype(auto)\n-70 left_fold(const BinaryOp& binary_op, Arg&& arg)\n-71 {\n-72 return std::forward<Arg>(arg);\n-73 }\n-74\n-96 template<class BinaryOp, class Init, class Arg0, class... Args>\n-97 constexpr decltype(auto)\n-98 left_fold(const BinaryOp& binary_op, Init&& init, Arg0&& arg_0, Args&&...\n-args)\n-99 {\n-100 return left_fold(\n-101 binary_op,\n-102 binary_op(std::forward<Init>(init), std::forward<Arg0>(arg_0)),\n-103 std::forward<Args>(args)...);\n-104 }\n-105\n-106 } // namespace Experimental\n+35 };\n+36\n+38 template<typename... FilterEntries>\n+_\b3_\b9 struct _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt\n+40 {\n+41\n+_\b4_\b2 static const std::size_t _\bs_\bi_\bz_\be = sizeof...(FilterEntries);\n+43\n+_\b4_\b4 typedef std::tuple<FilterEntries...> _\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp;\n+45\n+46 template<typename Node>\n+_\b4_\b7 struct _\ba_\bp_\bp_\bl_\by\n+48 {\n+_\b4_\b9 typedef std::tuple<typename Node::template Child<FilterEntries::\n+original_index>...> _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn;\n+_\b5_\b0 typedef std::tuple<typename Node::template Child<FilterEntries::\n+original_index>::Type...> _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n+_\b5_\b1 typedef std::tuple<std::shared_ptr<typename Node::template\n+Child<FilterEntries::original_index>::Type>...> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+52 };\n+53\n+54 };\n+55\n+_\b5_\b7 struct _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg {};\n+58\n+_\b6_\b0 struct _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg {};\n+61\n+62\n+_\b6_\b4 struct _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n+65 {\n+66\n+_\b6_\b8 typedef _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg _\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg;\n+69\n+70#ifdef DOXYGEN\n+71\n+73 template<typename Node, typename... Children>\n+_\b7_\b4 struct _\ba_\bp_\bp_\bl_\by\n+75 {\n+77\n+_\b8_\b0 typedef implementation-defined _\bt_\by_\bp_\be;\n+81 };\n+82\n+83#endif // DOXYGEN\n+84\n+85 };\n+86\n+88\n+_\b9_\b3 struct _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n+94 {\n+95\n+_\b9_\b7 typedef _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg _\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg;\n+98\n+99\n+101 template<typename Node>\n+_\b1_\b0_\b2 struct _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be\n+103 {\n+_\b1_\b0_\b5 static const bool _\bv_\ba_\bl_\bu_\be = true;\n+106 };\n 107\n-108\n-109#endif // DOXYGEN\n-110\n-112\n-119 template<typename Tree, typename Tag = StartTag>\n-_\b1_\b2_\b0 struct _\bT_\br_\be_\be_\bI_\bn_\bf_\bo\n-121 {\n-122\n-123 private:\n-124 // Start the tree traversal\n-125 typedef _\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b<_\bT_\br_\be_\be_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bT_\br_\be_\be_\b>> _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo;\n-126\n-127 public:\n-128\n-_\b1_\b3_\b0 static const std::size_t _\bd_\be_\bp_\bt_\bh = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh;\n-131\n-_\b1_\b3_\b3 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt;\n-134\n-_\b1_\b3_\b6 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = _\bN_\bo_\bd_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt;\n-137\n-138 };\n-139\n-140\n-141#ifndef DOXYGEN\n-142\n-143 /\n+109\n+117 template<typename Child, std::size_t new_index, std::size_t old_index>\n+_\b1_\b1_\b8 struct _\ba_\bp_\bp_\bl_\by\n+119 {\n+_\b1_\b2_\b1 static const bool _\bv_\ba_\bl_\bu_\be = true;\n+122 };\n+123\n+124 };\n+125\n+126 namespace {\n+127\n+128 /\n /\n ********************************************************************************\n-144 // TreeInfo specializations for the different node types\n-145 /\n+129 // IndexFilter helpers\n+130 /\n /\n ********************************************************************************\n-146\n-147\n-148 // leaf node\n-149 template<typename Node>\n-150 struct _\bT_\br_\be_\be_\bI_\bn_\bf_\bo<Node,_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n-151 {\n-152\n-153 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1;\n-154\n-155 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1;\n+131\n+132 template<typename Node, std::size_t new_index, std::size_t... indices>\n+133 struct index_filter_helper\n+134 {\n+135 template<typename... FilterEntries>\n+136 struct apply\n+137 {\n+138 typedef _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt<FilterEntries...> type;\n+139 };\n+140 };\n+141\n+142 template<typename Node, std::size_t new_index, std::size_t old_index, std::\n+size_t... indices>\n+143 struct index_filter_helper<Node,new_index,old_index,indices...>\n+144 {\n+145 template<typename... FilterEntries>\n+146 struct apply\n+147 : public index_filter_helper<Node,new_index+1,indices...>::template\n+apply<FilterEntries...,\n+148 FilterEntry<new_index,\n+149 old_index>\n+150 >\n+151 {};\n+152 };\n+153\n+154 } // anonymous namespace\n+155\n 156\n-157 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = 1;\n-158\n-159 };\n-160\n-161\n-162 // power node - exploit the fact that all children are identical\n-163 template<typename Node>\n-164 struct TreeInfo<Node,PowerNodeTag>\n-165 {\n-166\n-167 typedef TreeInfo<typename Node::ChildType,NodeTag<typename Node::\n-ChildType>> ChildInfo;\n-168\n-169 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1 + ChildInfo::depth;\n+158 template<std::size_t... indices>\n+_\b1_\b5_\b9 struct _\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br\n+160 : public _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n+161 {\n+162\n+163#ifndef DOXYGEN\n+164\n+165 template<typename Node, typename... Children>\n+166 struct _\ba_\bp_\bp_\bl_\by\n+167 {\n+168 typedef typename index_filter_helper<Node,0,indices...>::template _\ba_\bp_\bp_\bl_\by_\b<_\b>_\b:_\b:\n+_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n+169 };\n 170\n-171 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1 + StaticDegree<Node>::value *\n-ChildInfo::nodeCount;\n+171#endif // DOXYGEN\n 172\n-173 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = StaticDegree<Node>::value *\n-ChildInfo::leafCount;\n+173 };\n 174\n-175 };\n-176\n-177\n-178 namespace {\n-179\n-180 // TMP for iterating over the children of a composite node\n-181 // identical for both composite node implementations\n-182 template<typename Node, std::size_t k, std::size_t n>\n-183 struct generic_compositenode_children_info\n-184 {\n-185\n-186 typedef generic_compositenode_children_info<Node,k+1,n> NextChild;\n-187\n-188 // extract child info\n-189 typedef typename Node::template Child<k>::Type Child;\n-190 typedef NodeTag<Child> ChildTag;\n-191 typedef TreeInfo<Child,ChildTag> ChildInfo;\n+175\n+176 /\n+/\n+********************************************************************************\n+177 // filter: Wrapper class for turning a simple filter into an advanced\n+filter\n+178 // usable by FilteredCompositeNode\n+179 /\n+/\n+********************************************************************************\n+180\n+181 namespace {\n+182\n+183 template<typename Filter, std::size_t new_k, std::size_t old_k, typename...\n+tail>\n+184 struct filter_helper\n+185 {\n+186 template<typename... FilterDescriptors>\n+187 struct apply\n+188 {\n+189 typedef _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt<FilterDescriptors...> type;\n+190 };\n+191 };\n 192\n-193 // combine information of current child with info about following children\n-194 static const std::size_t maxDepth = ChildInfo::depth > NextChild::maxDepth\n-? ChildInfo::depth : NextChild::maxDepth;\n-195\n-196 static const std::size_t nodeCount = ChildInfo::nodeCount + NextChild::\n-nodeCount;\n-197\n-198 static const std::size_t leafCount = ChildInfo::leafCount + NextChild::\n-leafCount;\n-199\n-200 };\n-201\n-202 // End of recursion\n-203 template<typename Node, std::size_t n>\n-204 struct generic_compositenode_children_info<Node,n,n>\n-205 {\n-206 static const std::size_t maxDepth = 0;\n-207\n-208 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 0;\n-209\n-210 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = 0;\n-211 };\n-212\n-213 } // anonymous namespace\n-214\n-215\n-216 // Struct for building information about composite node\n-217 template<typename Node>\n-218 struct GenericCompositeNodeInfo\n-219 {\n+193 template<typename Filter, std::size_t new_k, std::size_t old_k, typename\n+_\bc_\bh_\bi_\bl_\bd, typename... tail>\n+194 struct filter_helper<Filter,new_k,old_k,_\bc_\bh_\bi_\bl_\bd,tail...>\n+195 {\n+196\n+197 template<typename... FilterDescriptors>\n+198 struct apply\n+199 : public std::conditional<Filter::template apply<child,new_k,old_k>::value,\n+200 typename filter_helper<Filter,new_k+1,old_k+1,tail...>::template\n+apply<FilterDescriptors...,FilterEntry<new_k,old_k> >,\n+201 typename filter_helper<Filter,new_k,old_k+1,tail...>::template\n+apply<FilterDescriptors...>\n+202 >::type\n+203 {};\n+204\n+205 };\n+206\n+207 } // anonymous namespace\n+208\n+210 template<typename Filter>\n+_\b2_\b1_\b1 struct _\bf_\bi_\bl_\bt_\be_\br\n+212 {\n+213\n+215 template<typename Node, typename... Children>\n+_\b2_\b1_\b6 struct _\ba_\bp_\bp_\bl_\by\n+217 {\n+218\n+219 static_assert((Filter::template validate<Node>::value),\"Invalid simple\n+filter\");\n 220\n-221 typedef generic_compositenode_children_info<Node,0,StaticDegree<Node>::\n-value> Children;\n+_\b2_\b2_\b1 typedef typename filter_helper<Filter,0,0,Children...>::template _\ba_\bp_\bp_\bl_\by_\b<_\b>_\b:_\b:\n+_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n 222\n-223 static const std::size_t _\bd_\be_\bp_\bt_\bh = 1 + Children::maxDepth;\n+223 };\n 224\n-225 static const std::size_t _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt = 1 + Children::nodeCount;\n+225 };\n 226\n-227 static const std::size_t _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt = Children::leafCount;\n 228\n-229 };\n-230\n+229 } // namespace TypeTree\n+230} //namespace Dune\n 231\n-232 // CompositeNode: delegate to GenericCompositeNodeInfo\n-233 template<typename Node>\n-234 struct TreeInfo<Node,CompositeNodeTag>\n-235 : public GenericCompositeNodeInfo<Node>\n-236 {};\n-237\n-238\n-239#endif // DOXYGEN\n-240\n-241\n-242 using Dune::index_constant;\n-243 namespace Indices = Dune::Indices;\n-244\n-246\n-247 } // namespace TypeTree\n-248} //namespace Dune\n-249\n-250#endif // DUNE_TYPETREE_UTILITY_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+232#endif // DUNE_TYPETREE_FILTERS_HH\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n-auto leafCount(const Tree &tree)\n-The number of leaf nodes in the Tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n-auto nodeCount(const Tree &tree)\n-The total number of nodes in the Tree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:524\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n-auto depth(const Tree &tree)\n-The depth of the TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:508\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a leaf node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo\n-Struct for obtaining some basic structural information about a TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n-static const std::size_t leafCount\n-The number of leaf nodes in the TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n-static const std::size_t depth\n-The depth of the TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n-static const std::size_t nodeCount\n-The total number of nodes in the TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by\n+A filter entry describing the mapping of one child in the filtered node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt\n+The result of a filter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp\n+std::tuple< FilterEntries... > IndexMap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static const std::size_t size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+std::tuple< typename Node::template Child< FilterEntries::original_index >... >\n+Children\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n+std::tuple< typename Node::template Child< FilterEntries::original_index >::\n+Type... > ChildTypes\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::tuple< std::shared_ptr< typename Node::template Child< FilterEntries::\n+original_index >::Type >... > NodeStorage\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+Tag describing a simple filter that can only decide whether or not to include a\n+single given child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+Tag describing an advanced filter that has full control over the construction\n+of the list of FilterEn...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n+Base class for advanced filters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+AdvancedFilterTag FilterTag\n+Filter tag for deciding on filter application mechanism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+Apply this filter to the given node and children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bt_\by_\bp_\be\n+implementation defined type\n+The result of the filtering process.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n+Default simple filter that accepts any node and leaves its child structure\n+unchanged.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n+SimpleFilterTag FilterTag\n+Filter tag for deciding on filter application mechanism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be\n+Validates the combination of filter and node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static const bool value\n+True if the combination of filter and node is valid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+Applies the filter to the given child node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static const bool value\n+True if the child will be included in the filtered node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br\n+Filter class for FilteredCompositeNode that selects the children with the given\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:161\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br\n+Adapter class that takes a SimpleFilter, validated it and turns it into an\n+AdvancedFilter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+Apply the filter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bt_\by_\bp_\be\n+filter_helper< Filter, 0, 0, Children... >::template apply ::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:221\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00050.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00050.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: transformationutilities.hh File Reference</title>\n+<title>dune-typetree: nodetags.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -69,21 +69,45 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">transformationutilities.hh File Reference</div></div>\n+ <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> |\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">nodetags.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code><br />\n-</div>\n+\n <p><a href=\"a00050_source.html\">Go to the source code of this file.</a></p>\n+<table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a leaf node. <a href=\"a01248.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a power node. <a href=\"a01252.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a power node with runtime degree. <a href=\"a01256.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a composite node. <a href=\"a01260.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n+Namespaces</h2></td></tr>\n+<tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,29 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-transformationutilities.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+nodetags.hh File Reference\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+\u00a0 Tag designating a leaf node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+\u00a0 Tag designating a power node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+\u00a0 Tag designating a power node with runtime degree. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+\u00a0 Tag designating a composite node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00050_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00050_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: transformationutilities.hh Source File</title>\n+<title>dune-typetree: nodetags.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,31 +74,54 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">transformationutilities.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">nodetags.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00050.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_NODETAGS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_NODETAGS_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/simpletransformationdescriptors.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/generictransformationdescriptors.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n <div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH</span></div>\n-<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">simpletransformationdescriptors.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">generictransformationdescriptors.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01248.html\"> 18</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01252.html\"> 21</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01256.html\"> 24</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01260.html\"> 27</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">struct </span>StartTag {};</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_NODETAGS_HH</span></div>\n+<div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n+<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n+<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n+<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n+<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,58 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-transformationutilities.hh\n+nodetags.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n-7#define DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n+6#ifndef DUNE_TYPETREE_NODETAGS_HH\n+7#define DUNE_TYPETREE_NODETAGS_HH\n 8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+9namespace _\bD_\bu_\bn_\be {\n+10 namespace TypeTree {\n 11\n-12#endif // DUNE_TYPETREE_TRANSFORMATIONUTILITIES_HH\n-_\bs_\bi_\bm_\bp_\bl_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bg_\be_\bn_\be_\br_\bi_\bc_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bd_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\b1_\b8 struct _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n+19\n+_\b2_\b1 struct _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n+22\n+_\b2_\b4 struct _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n+25\n+_\b2_\b7 struct _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n+28\n+29#ifndef DOXYGEN\n+30\n+32 struct StartTag {};\n+33\n+34\n+35\n+36#endif // DOXYGEN\n+37\n+39\n+40 } // namespace TypeTree\n+41} //namespace Dune\n+42\n+43#endif // DUNE_TYPETREE_NODETAGS_HH\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a leaf node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node with runtime degree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a composite node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00053.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00053.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: childextraction.hh File Reference</title>\n+<title>dune-typetree: nodeinterface.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,66 +70,61 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> |\n <a href=\"#typedef-members\">Typedefs</a> |\n <a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">childextraction.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">nodeinterface.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <type_traits></code><br />\n-<code>#include <utility></code><br />\n-<code>#include <dune/common/concept.hh></code><br />\n+<div class=\"textblock\"><code>#include <cstddef></code><br />\n+<code>#include <type_traits></code><br />\n <code>#include <dune/common/documentation.hh></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <dune/common/shared_ptr.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n </div>\n <p><a href=\"a00053_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01244.html\">Dune::TypeTree::NodeInterface</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Interface for nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01244.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n Typedefs</h2></td></tr>\n-<tr class=\"memitem:ga8136d392450f4308b90a04a143e20feb\" id=\"r_ga8136d392450f4308b90a04a143e20feb\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , std::size_t... indices> </td></tr>\n-<tr class=\"memitem:ga8136d392450f4308b90a04a143e20feb\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a> = typename impl::_Child< Node, indices... >::type</td></tr>\n-<tr class=\"memdesc:ga8136d392450f4308b90a04a143e20feb\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template alias for the type of a child node given by a list of child indices. <br /></td></tr>\n-<tr class=\"separator:ga8136d392450f4308b90a04a143e20feb\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gac7126c2c9df855877ce3e71c77738398\" id=\"r_gac7126c2c9df855877ce3e71c77738398\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename TreePath > </td></tr>\n-<tr class=\"memitem:gac7126c2c9df855877ce3e71c77738398\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">Dune::TypeTree::ChildForTreePath</a> = typename impl::_ChildForTreePath< Node, TreePath >::type</td></tr>\n-<tr class=\"memdesc:gac7126c2c9df855877ce3e71c77738398\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template alias for the type of a child node given by a TreePath or a <a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a> type. <br /></td></tr>\n-<tr class=\"separator:gac7126c2c9df855877ce3e71c77738398\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga5832a3bb33ab6b058aee3b201699584a\" id=\"r_ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n-<tr class=\"memitem:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index</a> = typename impl::_is_flat_index< std::decay_t< T > >::type</td></tr>\n-<tr class=\"memdesc:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Type trait that determines whether T is a flat index in the context of child extraction. <br /></td></tr>\n-<tr class=\"separator:ga5832a3bb33ab6b058aee3b201699584a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga69a1959f7e199cc23ff490487dc683b9\" id=\"r_ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n+<tr class=\"memitem:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a> = typename std::decay_t< Node >::NodeTag</td></tr>\n+<tr class=\"memdesc:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the node tag of the given Node. <br /></td></tr>\n+<tr class=\"separator:ga69a1959f7e199cc23ff490487dc683b9\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gab9fecf64a233645a10b181d50e519441\" id=\"r_gab9fecf64a233645a10b181d50e519441\"><td class=\"memTemplParams\" colspan=\"2\">template<typename T > </td></tr>\n+<tr class=\"memitem:gab9fecf64a233645a10b181d50e519441\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a> = typename std::decay_t< T >::ImplementationTag</td></tr>\n+<tr class=\"memdesc:gab9fecf64a233645a10b181d50e519441\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the implementation tag of the given Node. <br /></td></tr>\n+<tr class=\"separator:gab9fecf64a233645a10b181d50e519441\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gad5f09e67114a2b620494f80cff734a02\" id=\"r_gad5f09e67114a2b620494f80cff734a02\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n+<tr class=\"memitem:gad5f09e67114a2b620494f80cff734a02\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a> = decltype(Node::degree())</td></tr>\n+<tr class=\"memdesc:gad5f09e67114a2b620494f80cff734a02\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the statically known degree of the given Node type as a std::integral_constant. <br /></td></tr>\n+<tr class=\"separator:gad5f09e67114a2b620494f80cff734a02\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n Functions</h2></td></tr>\n-<tr class=\"memitem:gab8f2fef526363564e7bbe91daad49b9b\" id=\"r_gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n-<tr class=\"memitem:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a> (Node &&node, Indices... indices)</td></tr>\n-<tr class=\"memdesc:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Extracts the child of a node given by a sequence of compile-time and run-time indices. <br /></td></tr>\n-<tr class=\"separator:gab8f2fef526363564e7bbe91daad49b9b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga6d60a84ddd0be65b0cae4a5e6032a52a\" id=\"r_ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n-<tr class=\"memitem:ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">Dune::TypeTree::childStorage</a> (Node &&node, Indices... indices)</td></tr>\n-<tr class=\"separator:ga6d60a84ddd0be65b0cae4a5e6032a52a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gae4133f4dba113143455fcab49d8a103e\" id=\"r_gae4133f4dba113143455fcab49d8a103e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node , typename... Indices> </td></tr>\n-<tr class=\"memitem:gae4133f4dba113143455fcab49d8a103e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ImplementationDefined </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00091.html#gae4133f4dba113143455fcab49d8a103e\">Dune::TypeTree::child</a> (Node &&node, <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Indices... > <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</td></tr>\n-<tr class=\"memdesc:gae4133f4dba113143455fcab49d8a103e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Extracts the child of a node given by a <a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a> object. <br /></td></tr>\n-<tr class=\"separator:gae4133f4dba113143455fcab49d8a103e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga56ec139aa8b8af4e8fd25d3b31b970cd\" id=\"r_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Node > </td></tr>\n+<tr class=\"memitem:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a> (const Node &node)</td></tr>\n+<tr class=\"memdesc:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the degree of node as run time information. <br /></td></tr>\n+<tr class=\"separator:ga56ec139aa8b8af4e8fd25d3b31b970cd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,58 +1,43 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-childextraction.hh File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+nodeinterface.hh File Reference\n+#include <cstddef>\n #include <type_traits>\n-#include <utility>\n-#include <dune/common/concept.hh>\n #include <dune/common/documentation.hh>\n-#include <dune/common/typetraits.hh>\n-#include <dune/common/shared_ptr.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 Interface for nodes in a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template<typename Node , std::size_t... indices>\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd = typename impl::_Child< Node, indices... >::type\n-\u00a0 Template alias for the type of a child node given by a list of child\n- indices.\n-\u00a0\n-template<typename Node , typename TreePath >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = typename impl::_ChildForTreePath<\n- Node, TreePath >::type\n-\u00a0 Template alias for the type of a child node given by a TreePath or a\n- _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh type.\n+template<typename Node >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg = typename std::decay_t< Node >::NodeTag\n+\u00a0 Returns the node tag of the given Node.\n \u00a0\n template<typename T >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx = typename impl::_is_flat_index< std::\n- decay_t< T > >::type\n-\u00a0 Type trait that determines whether T is a flat index in the context of\n- child extraction.\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg = typename std::decay_t< T >::\n+ ImplementationTag\n+\u00a0 Returns the implementation tag of the given Node.\n+\u00a0\n+template<typename Node >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be = decltype(Node::degree())\n+\u00a0 Returns the statically known degree of the given Node type as a std::\n+ integral_constant.\n \u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename Node , typename... Indices>\n-ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd (Node &&node, Indices... indices)\n-\u00a0 Extracts the child of a node given by a sequence of\n- compile-time and run-time indices.\n-\u00a0\n-template<typename Node , typename... Indices>\n-ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node &&node, Indices...\n- indices)\n-\u00a0\n-template<typename Node , typename... Indices>\n-ImplementationDefined\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd (Node &&node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n- Indices... > _\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n-\u00a0 Extracts the child of a node given by a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n- object.\n+template<typename Node >\n+std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be (const Node &node)\n+\u00a0 Returns the degree of node as run time information.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00053_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00053_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: childextraction.hh Source File</title>\n+<title>dune-typetree: nodeinterface.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,290 +74,100 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">childextraction.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">nodeinterface.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00053.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <utility></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <type_traits></span></div>\n <div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/concept.hh></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n <div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">namespace </span>Impl {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"comment\">// check at run time whether index is a valid child index</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Node, <span class=\"keyword\">class</span> Index></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> std::true_type checkChildIndex (Node <span class=\"keyword\">const</span>& node, Index i)</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> assert(std::size_t(i) < node.degree() && <span class=\"stringliteral\">"Child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keywordflow\">return</span> {};</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> }</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"comment\">// check at compile time whether index is a valid index</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> Node, std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> std::bool_constant<(i < Node::degree())> checkChildIndex (Node <span class=\"keyword\">const</span>& node, index_constant<i>)</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">static_assert</span>(i < Node::degree(), <span class=\"stringliteral\">"Child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> {};</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> }</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"comment\">// finally return the node itself if no further indices are provided. Break condition</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// for the recursion over the node childs.</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Node></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childImpl (Node&& node)</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keywordflow\">return</span> std::forward<Node>(node);</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> }</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodePtr></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">auto</span> childStorageImpl (NodePtr&& nodePtr)</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> <span class=\"keywordflow\">return</span> std::forward<NodePtr>(nodePtr);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> }</div>\n+<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html\"> 34</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01244.html\">NodeInterface</a></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\"> 37</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\">isLeaf</a> = implementationDefined;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\"> 40</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\">isPower</a> = implementationDefined;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\"> 43</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\">isComposite</a> = implementationDefined;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\"> 51</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\">degree</a>();</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#ad6074e269b64278112cf86caa2298133\"> 59</a></span> <span class=\"keyword\">typedef</span> ImplementationDefined <a class=\"code hl_typedef\" href=\"a01244.html#ad6074e269b64278112cf86caa2298133\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n <div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"comment\">// recursively call `node.child(...)` with the given indices</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node, <span class=\"keyword\">class </span>I0, <span class=\"keyword\">class</span>... I></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childImpl (Node&& node, I0 i0, [[maybe_unused]] I... i)</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">auto</span> valid = checkChildIndex(node,i0);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (valid)</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keywordflow\">return</span> childImpl(node.child(i0),i...);</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"comment\">// recursively call `node.childStorage(...)` with the given indices</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>NodePtr, <span class=\"keyword\">class </span>I0, <span class=\"keyword\">class</span>... I></div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) childStorageImpl (NodePtr&& nodePtr, I0 i0, [[maybe_unused]] I... i)</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> {</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">auto</span> valid = checkChildIndex(*nodePtr,i0);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (valid)</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">return</span> childStorageImpl(nodePtr->childStorage(i0),i...);</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> }</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"comment\">// forward to the impl methods by extracting the indices from the treepath</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Node, <span class=\"keyword\">class</span>... Indices, std::size_t... i></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, [[maybe_unused]] HybridTreePath<Indices...> tp, std::index_sequence<i...>)</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> {</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keywordflow\">return</span> childImpl(std::forward<Node>(node),treePathEntry<i>(tp)...);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> }</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">// forward to the impl methods by extracting the indices from the treepath</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>NodePtr, <span class=\"keyword\">class</span>... Indices, std::size_t... i></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (NodePtr&& nodePtr, [[maybe_unused]] HybridTreePath<Indices...> tp, std::index_sequence<i...>)</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> {</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keywordflow\">return</span> childStorageImpl(std::forward<NodePtr>(nodePtr),treePathEntry<i>(tp)...);</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> }</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\"> 65</a></span> <span class=\"keyword\">typedef</span> ImplementationDefined <a class=\"code hl_typedef\" href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\"> 70</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a> = <span class=\"keyword\">typename</span> std::decay_t<Node>::NodeTag;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\"> 74</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">ImplementationTag</a> = <span class=\"keyword\">typename</span> std::decay_t<T>::ImplementationTag;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00079\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\"> 79</a></span> std::size_t <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(<span class=\"keyword\">const</span> Node& node)</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> {</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(&node,<a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag<Node></a>());</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> NodeTag></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> std::size_t <a class=\"code hl_function\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(<span class=\"keyword\">const</span> Node* node, <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a>)</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> {</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> <span class=\"keywordflow\">return</span> node->degree();</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> }</div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> } <span class=\"comment\">// end namespace Impl</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\"> 128</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> {</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keywordflow\">return</span> Impl::childImpl(std::forward<Node>(node),indices...);</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"foldopen\" id=\"foldopen00138\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\"> 138</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, Indices... indices)</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(Indices) > 0, <span class=\"stringliteral\">"childStorage() cannot be called with an empty list of child indices"</span>);</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keywordflow\">return</span> Impl::childStorageImpl(&node,indices...);</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gae4133f4dba113143455fcab49d8a103e\"> 173</a></span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Indices...></a> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">decltype</span>(<span class=\"keyword\">auto</span>) <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Indices...></a> tp)</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> {</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keywordflow\">return</span> Impl::child(std::forward<Node>(node),tp,std::index_sequence_for<Indices...>{});</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Indices></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> ImplementationDefined <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> (Node&& node, HybridTreePath<Indices...> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">childStorage</a> (Node&& node, HybridTreePath<Indices...> tp)</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> {</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>...(Indices) > 0, <span class=\"stringliteral\">"childStorage() cannot be called with an empty TreePath"</span>);</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keywordflow\">return</span> Impl::childStorage(&node,tp,std::index_sequence_for<Indices...>{});</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> }</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">struct </span>filter_void</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> {</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">using </span>type = T;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> };</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> <span class=\"keyword\">template</span><></div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">struct </span>filter_void<void></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {};</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t... indices></div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keyword\">struct </span>_Child</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> : <span class=\"keyword\">public</span> filter_void<std::decay_t<decltype(child(std::declval<Node>(),index_constant<indices>{}...))>></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> {};</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> </div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> }</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t... indices></div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\"> 225</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = <span class=\"keyword\">typename</span> impl::_Child<Node,indices...>::type;</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"keyword\">struct </span>_ChildForTreePath</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> {</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> <span class=\"keyword\">using </span>type = <span class=\"keyword\">typename</span> std::decay<decltype(child(std::declval<Node>(),std::declval<TreePath>()))>::type;</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> };</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\"> 252</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">ChildForTreePath</a> = <span class=\"keyword\">typename</span> impl::_ChildForTreePath<Node,TreePath>::type;</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> </div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> </div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"comment\">// By default, types are flat indices if they are integral</span></div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">struct </span>_is_flat_index</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> {</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> <span class=\"keyword\">using </span>type = std::is_integral<T>;</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> };</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> </div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> <span class=\"comment\">// And so is any index_constant</span></div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">struct </span>_is_flat_index<index_constant<i>></div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> {</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"keyword\">using </span>type = std::true_type;</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> };</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> </div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span><span class=\"comment\"> * This type trait can be used to check whether T is a flat index (i.e. either `std::size_t`</span></div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span><span class=\"comment\"> * or `index_constant`). The type trait normalizes T before doing the check, so it will also</span></div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span><span class=\"comment\"> * work correctly for references and cv-qualified types.</span></div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\"> 284</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">is_flat_index</a> = <span class=\"keyword\">typename</span> impl::_is_flat_index<std::decay_t<T>>::type;</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> </div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">namespace </span>impl {</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"comment\">// helper function for check in member child() functions that tolerates being passed something that</span></div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> <span class=\"comment\">// isn't a TreePath. It will just return 0 in that case</span></div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> </div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index<T>::value</a>,</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> >::type</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> _non_empty_tree_path (T)</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> {</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> }</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> !<a class=\"code hl_typedef\" href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index<T>::value</a>,</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> >::type</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> _non_empty_tree_path (T t)</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> {</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(t) > 0;</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> }</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> }</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> </div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> </div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_CHILDEXTRACTION_HH</span></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga5832a3bb33ab6b058aee3b201699584a\"><div class=\"ttname\"><a href=\"a00091.html#ga5832a3bb33ab6b058aee3b201699584a\">Dune::TypeTree::is_flat_index</a></div><div class=\"ttdeci\">typename impl::_is_flat_index< std::decay_t< T > >::type is_flat_index</div><div class=\"ttdoc\">Type trait that determines whether T is a flat index in the context of child extraction.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:284</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga6d60a84ddd0be65b0cae4a5e6032a52a\"><div class=\"ttname\"><a href=\"a00091.html#ga6d60a84ddd0be65b0cae4a5e6032a52a\">Dune::TypeTree::childStorage</a></div><div class=\"ttdeci\">ImplementationDefined childStorage(Node &&node, Indices... indices)</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:138</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gac7126c2c9df855877ce3e71c77738398\"><div class=\"ttname\"><a href=\"a00091.html#gac7126c2c9df855877ce3e71c77738398\">Dune::TypeTree::ChildForTreePath</a></div><div class=\"ttdeci\">typename impl::_ChildForTreePath< Node, TreePath >::type ChildForTreePath</div><div class=\"ttdoc\">Template alias for the type of a child node given by a TreePath or a HybridTreePath type.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:252</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\"> 107</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree</a> = <span class=\"keyword\">decltype</span>(Node::degree());</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_NODEINTERFACE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga56ec139aa8b8af4e8fd25d3b31b970cd\"><div class=\"ttname\"><a href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">Dune::TypeTree::degree</a></div><div class=\"ttdeci\">std::size_t degree(const Node &node)</div><div class=\"ttdoc\">Returns the degree of node as run time information.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:79</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_gab9fecf64a233645a10b181d50e519441\"><div class=\"ttname\"><a href=\"a00092.html#gab9fecf64a233645a10b181d50e519441\">Dune::TypeTree::ImplementationTag</a></div><div class=\"ttdeci\">typename std::decay_t< T >::ImplementationTag ImplementationTag</div><div class=\"ttdoc\">Returns the implementation tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:74</div></div>\n+<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n+<div class=\"ttc\" id=\"aa01244_html\"><div class=\"ttname\"><a href=\"a01244.html\">Dune::TypeTree::NodeInterface</a></div><div class=\"ttdoc\">Interface for nodes in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:35</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_a2df377f2e6955a72132fdbce145c3507\"><div class=\"ttname\"><a href=\"a01244.html#a2df377f2e6955a72132fdbce145c3507\">Dune::TypeTree::NodeInterface::degree</a></div><div class=\"ttdeci\">static auto degree()</div><div class=\"ttdoc\">Number of children of this node in the dune-typetree.</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_a3ea46e12485ced909c46bafbe0c7d8df\"><div class=\"ttname\"><a href=\"a01244.html#a3ea46e12485ced909c46bafbe0c7d8df\">Dune::TypeTree::NodeInterface::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Whether this is a power node in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_a5ec7bcac3957c41028be41f3713d44fc\"><div class=\"ttname\"><a href=\"a01244.html#a5ec7bcac3957c41028be41f3713d44fc\">Dune::TypeTree::NodeInterface::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Whether this is a leaf node in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:37</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_a84d7eb90e7b30648892b8278495b5d6a\"><div class=\"ttname\"><a href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\">Dune::TypeTree::NodeInterface::NodeStorage</a></div><div class=\"ttdeci\">ImplementationDefined NodeStorage</div><div class=\"ttdoc\">container type to pass around a collection of children</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:65</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_ab19c154cbeaf73ff62c21b13560419b9\"><div class=\"ttname\"><a href=\"a01244.html#ab19c154cbeaf73ff62c21b13560419b9\">Dune::TypeTree::NodeInterface::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Whether this is a composite node in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:43</div></div>\n+<div class=\"ttc\" id=\"aa01244_html_ad6074e269b64278112cf86caa2298133\"><div class=\"ttname\"><a href=\"a01244.html#ad6074e269b64278112cf86caa2298133\">Dune::TypeTree::NodeInterface::NodeTag</a></div><div class=\"ttdeci\">ImplementationDefined NodeTag</div><div class=\"ttdoc\">The type tag that describes what kind of node this is.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:59</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,323 +1,124 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-childextraction.hh\n+nodeinterface.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=8 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_CHILDEXTRACTION_HH\n-7#define DUNE_TYPETREE_CHILDEXTRACTION_HH\n+6#ifndef DUNE_TYPETREE_NODEINTERFACE_HH\n+7#define DUNE_TYPETREE_NODEINTERFACE_HH\n 8\n-9#include <type_traits>\n-10#include <utility>\n+9#include <cstddef>\n+10#include <type_traits>\n 11\n-12#include <dune/common/concept.hh>\n-13#include <dune/common/documentation.hh>\n-14#include <dune/common/typetraits.hh>\n-15#include <dune/common/shared_ptr.hh>\n+12#include <dune/common/documentation.hh>\n+13\n+14namespace _\bD_\bu_\bn_\be {\n+15 namespace TypeTree {\n 16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-19\n-20\n-21namespace _\bD_\bu_\bn_\be {\n-22 namespace TypeTree {\n-23\n-28\n-29#ifndef DOXYGEN\n-30\n-31 namespace Impl {\n-32\n-33 // check at run time whether index is a valid child index\n-34 template <class Node, class Index>\n-35 std::true_type checkChildIndex (Node const& node, Index i)\n-36 {\n-37 assert(std::size_t(i) < node.degree() && \"Child index out of range\");\n-38 return {};\n-39 }\n-40\n-41 // check at compile time whether index is a valid index\n-42 template <class Node, std::size_t i>\n-43 std::bool_constant<(i < Node::degree())> checkChildIndex (Node const& node,\n-index_constant<i>)\n-44 {\n-45 static_assert(i < Node::degree(), \"Child index out of range\");\n-46 return {};\n-47 }\n-48\n-49 // finally return the node itself if no further indices are provided. Break\n-condition\n-50 // for the recursion over the node childs.\n-51 template<class Node>\n-52 decltype(auto) childImpl (Node&& node)\n-53 {\n-54 return std::forward<Node>(node);\n-55 }\n-56\n-57 template<class NodePtr>\n-58 auto childStorageImpl (NodePtr&& nodePtr)\n-59 {\n-60 return std::forward<NodePtr>(nodePtr);\n-61 }\n+_\b3_\b4 struct _\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+35 {\n+_\b3_\b7 static const bool _\bi_\bs_\bL_\be_\ba_\bf = implementationDefined;\n+38\n+_\b4_\b0 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = implementationDefined;\n+41\n+_\b4_\b3 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = implementationDefined;\n+44\n+46\n+_\b5_\b1 static auto _\bd_\be_\bg_\br_\be_\be();\n+52\n+54\n+_\b5_\b9 typedef ImplementationDefined _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+60\n 62\n-63 // recursively call `node.child(...)` with the given indices\n-64 template<class Node, class I0, class... I>\n-65 decltype(auto) childImpl (Node&& node, I0 i0, [[maybe_unused]] I... i)\n-66 {\n-67 auto valid = checkChildIndex(node,i0);\n-68 if constexpr (valid)\n-69 return childImpl(node.child(i0),i...);\n-70 else\n-71 return;\n-72 }\n-73\n-74 // recursively call `node.childStorage(...)` with the given indices\n-75 template<class NodePtr, class I0, class... I>\n-76 decltype(auto) childStorageImpl (NodePtr&& nodePtr, I0 i0, [[maybe_unused]]\n-I... i)\n-77 {\n-78 auto valid = checkChildIndex(*nodePtr,i0);\n-79 if constexpr (valid)\n-80 return childStorageImpl(nodePtr->childStorage(i0),i...);\n-81 else\n-82 return;\n-83 }\n-84\n-85 // forward to the impl methods by extracting the indices from the treepath\n-86 template<class Node, class... Indices, std::size_t... i>\n-87 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, [[maybe_unused]]\n-HybridTreePath<Indices...> tp, std::index_sequence<i...>)\n-88 {\n-89 return childImpl(std::forward<Node>(node),treePathEntry<i>(tp)...);\n-90 }\n-91\n-92 // forward to the impl methods by extracting the indices from the treepath\n-93 template<class NodePtr, class... Indices, std::size_t... i>\n-94 decltype(auto) _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (NodePtr&& nodePtr, [[maybe_unused]]\n-HybridTreePath<Indices...> tp, std::index_sequence<i...>)\n+_\b6_\b5 typedef ImplementationDefined _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+66 };\n+67\n+69 template<typename Node>\n+_\b7_\b0 using _\bN_\bo_\bd_\be_\bT_\ba_\bg = typename std::decay_t<Node>::NodeTag;\n+71\n+73 template<typename T>\n+_\b7_\b4 using _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg = typename std::decay_t<T>::ImplementationTag;\n+75\n+76\n+78 template<typename Node>\n+_\b7_\b9 std::size_t _\bd_\be_\bg_\br_\be_\be(const Node& node)\n+80 {\n+81 return _\bd_\be_\bg_\br_\be_\be(&node,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bN_\bo_\bd_\be_\b>());\n+82 }\n+83\n+84#ifndef DOXYGEN\n+85\n+87\n+93 template<typename Node, typename NodeTag>\n+94 std::size_t _\bd_\be_\bg_\br_\be_\be(const Node* node, _\bN_\bo_\bd_\be_\bT_\ba_\bg)\n 95 {\n-96 return childStorageImpl(std::forward<NodePtr>(nodePtr),treePathEntry<i>\n-(tp)...);\n+96 return node->degree();\n 97 }\n 98\n-99 } // end namespace Impl\n+99#endif // DOXYGEN\n 100\n-101#endif // DOXYGEN\n 102\n-104\n-126 template<typename Node, typename... Indices>\n-127#ifdef DOXYGEN\n-_\b1_\b2_\b8 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, Indices... indices)\n-129#else\n-130 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, Indices... indices)\n-131#endif\n-132 {\n-133 return Impl::childImpl(std::forward<Node>(node),indices...);\n-134 }\n-135\n-136 template<typename Node, typename... Indices>\n-137#ifdef DOXYGEN\n-_\b1_\b3_\b8 ImplementationDefined _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, Indices... indices)\n-139#else\n-140 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, Indices... indices)\n-141#endif\n-142 {\n-143 static_assert(sizeof...(Indices) > 0, \"childStorage() cannot be called with\n-an empty list of child indices\");\n-144 return Impl::childStorageImpl(&node,indices...);\n-145 }\n-146\n-148\n-171 template<typename Node, typename... Indices>\n-172#ifdef DOXYGEN\n-_\b1_\b7_\b3 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\b._\b._\b>\n-_\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n-174#else\n-175 decltype(auto) _\bc_\bh_\bi_\bl_\bd (Node&& node, _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\b._\b._\b> tp)\n-176#endif\n-177 {\n-178 return Impl::child(std::forward<Node>(node),tp,std::\n-index_sequence_for<Indices...>{});\n-179 }\n-180\n-181 template<typename Node, typename... Indices>\n-182#ifdef DOXYGEN\n-183 ImplementationDefined _\bc_\bh_\bi_\bl_\bd (Node&& node, HybridTreePath<Indices...>\n-_\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n-184#else\n-185 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (Node&& node, HybridTreePath<Indices...> tp)\n-186#endif\n-187 {\n-188 static_assert(sizeof...(Indices) > 0, \"childStorage() cannot be called with\n-an empty TreePath\");\n-189 return Impl::childStorage(&node,tp,std::index_sequence_for<Indices...>{});\n-190 }\n-191\n-192\n-193#ifndef DOXYGEN\n-194\n-195 namespace impl {\n-196\n-197 template<typename T>\n-198 struct filter_void\n-199 {\n-200 using type = T;\n-201 };\n-202\n-203 template<>\n-204 struct filter_void<void>\n-205 {};\n-206\n-207 template<typename Node, std::size_t... indices>\n-208 struct _Child\n-209 : public filter_void<std::decay_t<decltype(child(std::declval<Node>\n-(),index_constant<indices>{}...))>>\n-210 {};\n-211\n-212 }\n-213\n-214#endif // DOXYGEN\n-215\n-217\n-224 template<typename Node, std::size_t... indices>\n-_\b2_\b2_\b5 using _\bC_\bh_\bi_\bl_\bd = typename impl::_Child<Node,indices...>::type;\n-226\n-227\n-228#ifndef DOXYGEN\n-229\n-230 namespace impl {\n-231\n-232 template<typename Node, typename TreePath>\n-233 struct _ChildForTreePath\n-234 {\n-235 using type = typename std::decay<decltype(child(std::declval<Node>(),std::\n-declval<TreePath>()))>::type;\n-236 };\n-237\n-238 }\n-239\n-240#endif // DOXYGEN\n-241\n-243\n-251 template<typename Node, typename TreePath>\n-_\b2_\b5_\b2 using _\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = typename impl::_ChildForTreePath<Node,TreePath>::\n-type;\n-253\n-254\n-255#ifndef DOXYGEN\n-256\n-257 namespace impl {\n-258\n-259 // By default, types are flat indices if they are integral\n-260 template<typename T>\n-261 struct _is_flat_index\n-262 {\n-263 using type = std::is_integral<T>;\n-264 };\n-265\n-266 // And so is any index_constant\n-267 template<std::size_t i>\n-268 struct _is_flat_index<index_constant<i>>\n-269 {\n-270 using type = std::true_type;\n-271 };\n-272\n-273 }\n-274\n-275#endif // DOXYGEN\n-276\n-278 /*\n-279 * This type trait can be used to check whether T is a flat index (i.e.\n-either `std::size_t`\n-280 * or `index_constant`). The type trait normalizes T before doing the check,\n-so it will also\n-281 * work correctly for references and cv-qualified types.\n-282 */\n-283 template<typename T>\n-_\b2_\b8_\b4 using _\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx = typename impl::_is_flat_index<std::decay_t<T>>::type;\n-285\n-286#ifndef DOXYGEN\n-287\n-288 namespace impl {\n-289\n-290 // helper function for check in member child() functions that tolerates\n-being passed something that\n-291 // isn't a TreePath. It will just return 0 in that case\n-292\n-293 template<typename T>\n-294 constexpr typename std::enable_if<\n-295 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx_\b<_\bT_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be,\n-296 bool\n-297 >::type\n-298 _non_empty_tree_path (T)\n-299 {\n-300 return false;\n-301 }\n-302\n-303 template<typename T>\n-304 constexpr typename std::enable_if<\n-305 !_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx_\b<_\bT_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be,\n-306 bool\n-307 >::type\n-308 _non_empty_tree_path (T t)\n-309 {\n-310 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(t) > 0;\n-311 }\n-312\n-313 }\n-314\n-315#endif // DOXYGEN\n-316\n-318\n-319 } // namespace TypeTree\n-320} //namespace Dune\n-321\n-322#endif // DUNE_TYPETREE_CHILDEXTRACTION_HH\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bi_\bs_\b__\bf_\bl_\ba_\bt_\b__\bi_\bn_\bd_\be_\bx\n-typename impl::_is_flat_index< std::decay_t< T > >::type is_flat_index\n-Type trait that determines whether T is a flat index in the context of child\n-extraction.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:284\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-ImplementationDefined childStorage(Node &&node, Indices... indices)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-typename impl::_Child< Node, indices... >::type Child\n-Template alias for the type of a child node given by a list of child indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bF_\bo_\br_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-typename impl::_ChildForTreePath< Node, TreePath >::type ChildForTreePath\n-Template alias for the type of a child node given by a TreePath or a\n-HybridTreePath type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n-constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n-Returns the size (number of components) of the given HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+106 template<typename Node>\n+_\b1_\b0_\b7 using _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be = decltype(Node::degree());\n+108\n+110\n+111 } // namespace TypeTree\n+112} //namespace Dune\n+113\n+114#endif // DUNE_TYPETREE_NODEINTERFACE_HH\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+std::size_t degree(const Node &node)\n+Returns the degree of node as run time information.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+typename std::decay_t< Node >::NodeTag NodeTag\n+Returns the node tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\ba_\bg\n+typename std::decay_t< T >::ImplementationTag ImplementationTag\n+Returns the implementation tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n+decltype(Node::degree()) StaticDegree\n+Returns the statically known degree of the given Node type as a std::\n+integral_constant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-A hybrid version of TreePath that supports both compile time and run time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface for nodes in a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static auto degree()\n+Number of children of this node in the dune-typetree.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+static const bool isPower\n+Whether this is a power node in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Whether this is a leaf node in a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+ImplementationDefined NodeStorage\n+container type to pass around a collection of children\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Whether this is a composite node in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+ImplementationDefined NodeTag\n+The type tag that describes what kind of node this is.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:59\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00056.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00056.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: nodetags.hh File Reference</title>\n+<title>dune-typetree: traversalutilities.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,44 +70,102 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">nodetags.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">traversalutilities.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-\n+<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00059_source.html\">dune/typetree/traversal.hh</a>></code><br />\n+</div>\n <p><a href=\"a00056_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a leaf node. <a href=\"a01248.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a power node. <a href=\"a01252.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a power node with runtime degree. <a href=\"a01256.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag designating a composite node. <a href=\"a01260.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:gab407f8e914f8fa3fee78d35a102e2693\" id=\"r_gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memTemplParams\" colspan=\"2\">template<typename ResultType , typename Tree , typename F , typename R > </td></tr>\n+<tr class=\"memitem:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ResultType </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">Dune::TypeTree::reduceOverLeafs</a> (const Tree &tree, F functor, R reduction, ResultType startValue)</td></tr>\n+<tr class=\"memdesc:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Calculate a quantity as a reduction over the leaf nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n+<tr class=\"separator:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table>\n+<h2 class=\"groupheader\">Variable Documentation</h2>\n+<a id=\"a925ce4fb47f35dbaf1550d896578184f\" name=\"a925ce4fb47f35dbaf1550d896578184f\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a925ce4fb47f35dbaf1550d896578184f\">◆ </a></span>_functor</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">F _functor</td>\n+ </tr>\n+ </table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n+<a id=\"a3399305aa17d4bcec74944e962ff3a12\" name=\"a3399305aa17d4bcec74944e962ff3a12\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3399305aa17d4bcec74944e962ff3a12\">◆ </a></span>_reduction</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">R _reduction</td>\n+ </tr>\n+ </table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n+<a id=\"ad4dc401736cbecb52f1afd1c8c8d359f\" name=\"ad4dc401736cbecb52f1afd1c8c8d359f\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4dc401736cbecb52f1afd1c8c8d359f\">◆ </a></span>_value</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">ResultType _value</td>\n+ </tr>\n+ </table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n+<a id=\"ac933f134e17da9e8dbf18be15134df40\" name=\"ac933f134e17da9e8dbf18be15134df40\"></a>\n+<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac933f134e17da9e8dbf18be15134df40\">◆ </a></span>treePathType</h2>\n+\n+<div class=\"memitem\">\n+<div class=\"memproto\">\n+<table class=\"mlabels\">\n+ <tr>\n+ <td class=\"mlabels-left\">\n+ <table class=\"memname\">\n+ <tr>\n+ <td class=\"memname\">const TreePathType::Type treePathType = TreePathType::dynamic</td>\n+ </tr>\n+ </table>\n+ </td>\n+ <td class=\"mlabels-right\">\n+<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n+ </tr>\n </table>\n+</div><div class=\"memdoc\">\n+\n+</div>\n+</div>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,33 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nodetags.hh File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+traversalutilities.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-\u00a0 Tag designating a leaf node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-\u00a0 Tag designating a power node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-\u00a0 Tag designating a power node with runtime degree. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-\u00a0 Tag designating a composite node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename ResultType , typename Tree , typename F , typename R >\n+ResultType\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs (const Tree &tree, F functor, R\n+ reduction, ResultType startValue)\n+\u00a0 Calculate a quantity as a reduction over the leaf nodes of a\n+ _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n+\u00a0\n+*\b**\b**\b**\b**\b* V\bVa\bar\bri\bia\bab\bbl\ble\be D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_f\bfu\bun\bnc\bct\bto\bor\br *\b**\b**\b**\b**\b*\n+F _functor\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_r\bre\bed\bdu\buc\bct\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+R _reduction\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_v\bva\bal\blu\bue\be *\b**\b**\b**\b**\b*\n+ResultType _value\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0t\btr\bre\bee\beP\bPa\bat\bth\bhT\bTy\byp\bpe\be *\b**\b**\b**\b**\b*\n+const TreePathType::Type treePathType = TreePathType::dynamic static\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00056_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00056_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: nodetags.hh Source File</title>\n+<title>dune-typetree: traversalutilities.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,54 +74,90 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">nodetags.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">traversalutilities.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00056.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_NODETAGS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_NODETAGS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01248.html\"> 18</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a> {};</div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01252.html\"> 21</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00059.html\">dune/typetree/traversal.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01256.html\"> 24</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a> {};</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01260.html\"> 27</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> {};</div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">struct </span>StartTag {};</div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F, <span class=\"keyword\">typename</span> R, <span class=\"keyword\">typename</span> ResultType></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">struct </span>LeafReductionVisitor</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> : <span class=\"keyword\">public</span> TypeTree::TreeVisitor</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00056.html#ac933f134e17da9e8dbf18be15134df40\"> 32</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a00056.html#ac933f134e17da9e8dbf18be15134df40\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>;</div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keywordtype\">void</span> leaf(<span class=\"keyword\">const</span> Node& node, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <a class=\"code hl_variable\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a> = <a class=\"code hl_variable\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>(<a class=\"code hl_variable\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>,<a class=\"code hl_variable\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>(node,<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>));</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> }</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_NODETAGS_HH</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> LeafReductionVisitor(F functor, R reduction, ResultType startValue)</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> : <a class=\"code hl_variable\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>(functor)</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> , <a class=\"code hl_variable\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>(reduction)</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> , <a class=\"code hl_variable\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>(startValue)</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {}</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> ResultType <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>; }</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\"> 48</a></span> F <a class=\"code hl_variable\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\"> 49</a></span> R <a class=\"code hl_variable\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\"> 50</a></span> ResultType <a class=\"code hl_variable\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>;</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> };</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ResultType, <span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> F, <span class=\"keyword\">typename</span> R></div>\n+<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\"> 83</a></span> ResultType <a class=\"code hl_function\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">reduceOverLeafs</a>(<span class=\"keyword\">const</span> Tree& tree, F functor, R reduction, ResultType startValue)</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> {</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> LeafReductionVisitor<F,R,ResultType> visitor(functor,reduction,startValue);</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <a class=\"code hl_function\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">TypeTree::applyToTree</a>(tree,visitor);</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keywordflow\">return</span> visitor.result();</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n+<div class=\"ttc\" id=\"aa00023_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa00056_html_a3399305aa17d4bcec74944e962ff3a12\"><div class=\"ttname\"><a href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a></div><div class=\"ttdeci\">R _reduction</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa00056_html_a925ce4fb47f35dbaf1550d896578184f\"><div class=\"ttname\"><a href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a></div><div class=\"ttdeci\">F _functor</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:48</div></div>\n+<div class=\"ttc\" id=\"aa00056_html_ac933f134e17da9e8dbf18be15134df40\"><div class=\"ttname\"><a href=\"a00056.html#ac933f134e17da9e8dbf18be15134df40\">treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:32</div></div>\n+<div class=\"ttc\" id=\"aa00056_html_ad4dc401736cbecb52f1afd1c8c8d359f\"><div class=\"ttname\"><a href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a></div><div class=\"ttdeci\">ResultType _value</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:50</div></div>\n+<div class=\"ttc\" id=\"aa00059_html\"><div class=\"ttname\"><a href=\"a00059.html\">traversal.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00090_html_gab407f8e914f8fa3fee78d35a102e2693\"><div class=\"ttname\"><a href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">Dune::TypeTree::reduceOverLeafs</a></div><div class=\"ttdeci\">ResultType reduceOverLeafs(const Tree &tree, F functor, R reduction, ResultType startValue)</div><div class=\"ttdoc\">Calculate a quantity as a reduction over the leaf nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa00090_html_gafebbce1d18f7ddd62e267df3de139334\"><div class=\"ttname\"><a href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(Tree &&tree, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:239</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n-<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n-<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n-<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,58 +1,109 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-nodetags.hh\n+traversalutilities.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_NODETAGS_HH\n-7#define DUNE_TYPETREE_NODETAGS_HH\n+6#ifndef DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n+7#define DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n 8\n-9namespace _\bD_\bu_\bn_\be {\n-10 namespace TypeTree {\n-11\n-_\b1_\b8 struct _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n-19\n-_\b2_\b1 struct _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n+9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be {\n+12 namespace TypeTree {\n+13\n+19 namespace {\n+20\n 22\n-_\b2_\b4 struct _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n-25\n-_\b2_\b7 struct _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg {};\n-28\n-29#ifndef DOXYGEN\n-30\n-32 struct StartTag {};\n+27 template<typename F, typename R, typename ResultType>\n+28 struct LeafReductionVisitor\n+29 : public TypeTree::TreeVisitor\n+30 {\n+31\n+_\b3_\b2 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc;\n 33\n-34\n-35\n-36#endif // DOXYGEN\n-37\n+34 template<typename Node, typename TreePath>\n+35 void leaf(const Node& node, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n+36 {\n+37 _\b__\bv_\ba_\bl_\bu_\be = _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn(_\b__\bv_\ba_\bl_\bu_\be,_\b__\bf_\bu_\bn_\bc_\bt_\bo_\br(node,_\bt_\br_\be_\be_\bP_\ba_\bt_\bh));\n+38 }\n 39\n-40 } // namespace TypeTree\n-41} //namespace Dune\n-42\n-43#endif // DUNE_TYPETREE_NODETAGS_HH\n+40 LeafReductionVisitor(F functor, R reduction, ResultType startValue)\n+41 : _\b__\bf_\bu_\bn_\bc_\bt_\bo_\br(functor)\n+42 , _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn(reduction)\n+43 , _\b__\bv_\ba_\bl_\bu_\be(startValue)\n+44 {}\n+45\n+46 ResultType _\br_\be_\bs_\bu_\bl_\bt() { return _\b__\bv_\ba_\bl_\bu_\be; }\n+47\n+_\b4_\b8 F _\b__\bf_\bu_\bn_\bc_\bt_\bo_\br;\n+_\b4_\b9 R _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n+_\b5_\b0 ResultType _\b__\bv_\ba_\bl_\bu_\be;\n+51\n+52 };\n+53\n+54 } // anonymous namespace\n+55\n+57\n+82 template<typename ResultType, typename Tree, typename F, typename R>\n+_\b8_\b3 ResultType _\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs(const Tree& tree, F functor, R reduction,\n+ResultType startValue)\n+84 {\n+85 LeafReductionVisitor<F,R,ResultType> visitor(functor,reduction,startValue);\n+86 _\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,visitor);\n+87 return visitor.result();\n+88 }\n+89\n+91\n+92 } // namespace TypeTree\n+93} //namespace Dune\n+94\n+95#endif // DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n+_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n+_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n+R _reduction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:49\n+_\b__\bf_\bu_\bn_\bc_\bt_\bo_\br\n+F _functor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:48\n+_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n+static const TreePathType::Type treePathType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:32\n+_\b__\bv_\ba_\bl_\bu_\be\n+ResultType _value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:50\n+_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs\n+ResultType reduceOverLeafs(const Tree &tree, F functor, R reduction, ResultType\n+startValue)\n+Calculate a quantity as a reduction over the leaf nodes of a TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n+void applyToTree(Tree &&tree, Visitor &&visitor)\n+Apply visitor to TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:239\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a leaf node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node with runtime degree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a composite node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n+@ dynamic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00059.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00059.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: typetree.hh File Reference</title>\n+<title>dune-typetree: traversal.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -69,32 +69,80 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">typetree.hh File Reference</div></div>\n+ <div class=\"summary\">\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#typedef-members\">Typedefs</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">traversal.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/leafnode.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00038_source.html\">dune/typetree/powernode.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00077_source.html\">dune/typetree/dynamicpowernode.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00026_source.html\">dune/typetree/compositenode.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/traversal.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/pairtraversal.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00083_source.html\">dune/typetree/traversalutilities.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00020_source.html\">dune/typetree/transformation.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/transformationutilities.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <utility></code><br />\n+<code>#include <dune/common/hybridutilities.hh></code><br />\n+<code>#include <dune/common/std/type_traits.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code><br />\n </div>\n <p><a href=\"a00059_source.html\">Go to the source code of this file.</a></p>\n+<table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n+Namespaces</h2></td></tr>\n+<tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:a199ef6ea1f4fb18e8c5789ca1aab091c\" id=\"r_a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree > </td></tr>\n+<tr class=\"memitem:a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">Dune::TypeTree::Detail::DynamicTraversalConcept</a> = decltype((std::declval< Tree >().<a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(), std::declval< Tree >().<a class=\"el\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>(0u)))</td></tr>\n+<tr class=\"separator:a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a2eab71f00fba61df87a3c0f8872a2a44\" id=\"r_a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree > </td></tr>\n+<tr class=\"memitem:a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">Dune::TypeTree::Detail::StaticTraversalConcept</a> = decltype((std::integral_constant< std::size_t, Tree::degree()>{}))</td></tr>\n+<tr class=\"separator:a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:aac044f60050eb4fb71c685c68a187e02\" id=\"r_aac044f60050eb4fb71c685c68a187e02\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, class Prefix , std::enable_if_t< Tree::isLeaf, int > = 0> </td></tr>\n+<tr class=\"memitem:aac044f60050eb4fb71c685c68a187e02\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Dune::TypeTree::Detail::leafTreePathTuple</a> (Prefix prefix)</td></tr>\n+<tr class=\"separator:aac044f60050eb4fb71c685c68a187e02\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:addc8106816a6c1ab2870f3c34398a7df\" id=\"r_addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, class Prefix , std::size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and(pathType!=<a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>))), int > = 0> </td></tr>\n+<tr class=\"memitem:addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#addc8106816a6c1ab2870f3c34398a7df\">Dune::TypeTree::Detail::leafTreePathTuple</a> (Prefix prefix, std::index_sequence< indices... >)</td></tr>\n+<tr class=\"separator:addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a6dd219b33e36d07c725b68addf01ead7\" id=\"r_a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memTemplParams\" colspan=\"2\">template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T >::isLeaf, int > = 0> </td></tr>\n+<tr class=\"memitem:a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Dune::TypeTree::Detail::applyToTree</a> (T &&tree, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V &&visitor)</td></tr>\n+<tr class=\"separator:a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a168e4cc76ad223e23b07ce86e81318ea\" id=\"r_a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memTemplParams\" colspan=\"2\">template<class T , class TreePath , class PreFunc , class LeafFunc , class PostFunc > </td></tr>\n+<tr class=\"memitem:a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Dune::TypeTree::Detail::forEachNode</a> (T &&tree, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc &&postFunc)</td></tr>\n+<tr class=\"separator:a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga40f2a5d5435d0ae5ff375e2d54beb973\" id=\"r_ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType = TreePathType::dynamic> </td></tr>\n+<tr class=\"memitem:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">Dune::TypeTree::leafTreePathTuple</a> ()</td></tr>\n+<tr class=\"memdesc:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create tuple of tree paths to leafs. <br /></td></tr>\n+<tr class=\"separator:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gafebbce1d18f7ddd62e267df3de139334\" id=\"r_gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree , typename Visitor > </td></tr>\n+<tr class=\"memitem:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a> (Tree &&tree, Visitor &&visitor)</td></tr>\n+<tr class=\"memdesc:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply visitor to <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n+<tr class=\"separator:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga29b6b44967c09f379358b0264124c0a7\" id=\"r_ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class NodeFunc > </td></tr>\n+<tr class=\"memitem:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">Dune::TypeTree::forEachNode</a> (Tree &&tree, NodeFunc &&nodeFunc)</td></tr>\n+<tr class=\"memdesc:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Traverse tree and visit each node. <br /></td></tr>\n+<tr class=\"separator:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gad2f9c441b6882fcd11419500df8a56ec\" id=\"r_gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class LeafFunc > </td></tr>\n+<tr class=\"memitem:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">Dune::TypeTree::forEachLeafNode</a> (Tree &&tree, LeafFunc &&leafFunc)</td></tr>\n+<tr class=\"memdesc:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Traverse tree and visit each leaf node. <br /></td></tr>\n+<tr class=\"separator:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,73 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-typetree.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+traversal.hh File Reference\n+#include <utility>\n+#include <dune/common/hybridutilities.hh>\n+#include <dune/common/std/type_traits.hh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template<class Tree >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((std::\n+ declval< Tree >()._\bd_\be_\bg_\br_\be_\be(), std::declval< Tree >()._\bc_\bh_\bi_\bl_\bd(0u)))\n+\u00a0\n+template<class Tree >\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((std::\n+ integral_constant< std::size_t, Tree::degree()>{}))\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix , std::\n+enable_if_t< Tree::isLeaf, int > = 0>\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be (Prefix prefix)\n+\u00a0\n+template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix , std::\n+size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and\n+(pathType!=_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc))), int > = 0>\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be (Prefix prefix, std::\n+ index_sequence< indices... >)\n+\u00a0\n+template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T\n+>::isLeaf, int > = 0>\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (T &&tree, TreePath\n+ _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V &&visitor)\n+\u00a0\n+template<class T , class TreePath , class PreFunc , class LeafFunc , class\n+PostFunc >\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be (T &&tree, TreePath\n+ _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc\n+ &&postFunc)\n+\u00a0\n+template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType = TreePathType::dynamic>\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be ()\n+\u00a0 Create tuple of tree paths to leafs.\n+\u00a0\n+template<typename Tree , typename Visitor >\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (Tree &&tree, Visitor &&visitor)\n+\u00a0 Apply visitor to _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n+\u00a0\n+template<class Tree , class NodeFunc >\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be (Tree &&tree, NodeFunc &&nodeFunc)\n+\u00a0 Traverse tree and visit each node.\n+\u00a0\n+template<class Tree , class LeafFunc >\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be (Tree &&tree, LeafFunc\n+ &&leafFunc)\n+\u00a0 Traverse tree and visit each leaf node.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00059_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00059_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: typetree.hh Source File</title>\n+<title>dune-typetree: traversal.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,53 +74,281 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">typetree.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">traversal.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00059.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00068.html\">dune/typetree/leafnode.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00038.html\">dune/typetree/powernode.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00077.html\">dune/typetree/dynamicpowernode.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00026.html\">dune/typetree/compositenode.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00080.html\">dune/typetree/traversal.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00065.html\">dune/typetree/pairtraversal.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00083.html\">dune/typetree/traversalutilities.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00020.html\">dune/typetree/transformation.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/transformationutilities.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00032.html\">dune/typetree/accumulate_static.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/childextraction.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00020_html\"><div class=\"ttname\"><a href=\"a00020.html\">transformation.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00026_html\"><div class=\"ttname\"><a href=\"a00026.html\">compositenode.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00032_html\"><div class=\"ttname\"><a href=\"a00032.html\">accumulate_static.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00038_html\"><div class=\"ttname\"><a href=\"a00038.html\">powernode.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">transformationutilities.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">childextraction.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00065_html\"><div class=\"ttname\"><a href=\"a00065.html\">pairtraversal.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00068_html\"><div class=\"ttname\"><a href=\"a00068.html\">leafnode.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00077_html\"><div class=\"ttname\"><a href=\"a00077.html\">dynamicpowernode.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00080_html\"><div class=\"ttname\"><a href=\"a00080.html\">traversal.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00083_html\"><div class=\"ttname\"><a href=\"a00083.html\">traversalutilities.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <utility></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00008.html\">dune/typetree/childextraction.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00074.html\">dune/typetree/visitor.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">struct </span>NoOp</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">void</span> operator()(T&&...)<span class=\"keyword\"> const </span>{ <span class=\"comment\">/* do nothing */</span> }</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> };</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keyword\">namespace </span>Detail {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"comment\">// SFINAE template check that Tree has a degree() function and a child() function accepting integer indices</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\"> 40</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">DynamicTraversalConcept</a> = <span class=\"keyword\">decltype</span>((</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> std::declval<Tree>().degree(),</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> std::declval<Tree>().child(0u)</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> ));</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"comment\">// SFINAE template check that Tree has static (constexpr) function Tree::degree()</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\"> 47</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">StaticTraversalConcept</a> = <span class=\"keyword\">decltype</span>((</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> std::integral_constant<std::size_t, Tree::degree()>{}</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> ));</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> std::enable_if_t<Tree::isLeaf, int> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\"> 54</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix)</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keywordflow\">return</span> std::make_tuple(prefix);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> std::enable_if_t<not Tree::isLeaf, int> = 0></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix);</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix, std::size_t... indices,</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> std::enable_if_t<(Tree::isComposite or (Tree::isPower and (pathType!=<a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>))), <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#addc8106816a6c1ab2870f3c34398a7df\"> 65</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix, std::index_sequence<indices...>)</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keywordflow\">return</span> std::tuple_cat(<a class=\"code hl_function\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Detail::leafTreePathTuple</a><<a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">TypeTree::Child<Tree,indices></a>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(prefix, Dune::index_constant<indices>{}))...);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix, std::size_t... indices,</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> std::enable_if_t<(Tree::isPower and (pathType==<a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>)), <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix, std::index_sequence<indices...>)</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keywordflow\">return</span> std::tuple_cat(<a class=\"code hl_function\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Detail::leafTreePathTuple</a><<a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">TypeTree::Child<Tree,indices></a>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(prefix, indices))...);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> std::enable_if_t<not Tree::isLeaf, int>></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix)</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> {</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> Detail::leafTreePathTuple<Tree, pathType>(prefix, std::make_index_sequence<Tree::degree()>{});</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> <span class=\"comment\">/* The signature is the same as for the public applyToTree</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span><span class=\"comment\"> * function in Dune::Typetree, despite the additionally passed</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span><span class=\"comment\"> * treePath argument. The path passed here is associated to</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span><span class=\"comment\"> * the tree and the relative paths of the children (wrt. to tree)</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span><span class=\"comment\"> * are appended to this. Hence the behavior of the public function</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span><span class=\"comment\"> * is resembled by passing an empty treePath.</span></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span><span class=\"comment\"> * This is the overload for leaf traversal</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> std::enable_if_t<std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\"> 97</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> {</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> visitor.leaf(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span><span class=\"comment\"> * This is the general overload doing child traversal.</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> std::enable_if_t<not std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> {</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">using </span>Tree = std::remove_reference_t<T>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> visitor.pre(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"comment\">// check which type of traversal is supported by the tree</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<DynamicTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<StaticTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"comment\">// create a dynamic or static index range</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">auto</span> indices = [&]{</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(preferDynamicTraversal::value && allowDynamicTraversal::value)</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keywordflow\">return</span> Dune::range(std::size_t(tree.degree()));</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">else</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"keywordflow\">return</span> Dune::range(tree.degree());</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> }();</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value || allowStaticTraversal::value) {</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">auto</span>&& <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> = tree.child(i);</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = std::decay_t<<span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>)>;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> visitor.beforeChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"comment\">// This requires that visitor.in(...) can always be instantiated,</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"comment\">// even if there's a single child only.</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keywordflow\">if</span> (i>0)</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> visitor.in(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree,Child,TreePath>::value;</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(visitChild) {</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, childTreePath, visitor);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> }</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> visitor.afterChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> });</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> visitor.post(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> }</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"comment\">/* Traverse tree and visit each node. The signature is the same</span></div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span><span class=\"comment\"> * as for the public forEachNode function in Dune::Typtree,</span></div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span><span class=\"comment\"> * despite the additionally passed treePath argument. The path</span></div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span><span class=\"comment\"> * passed here is associated to the tree and the relative</span></div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span><span class=\"comment\"> * paths of the children (wrt. to tree) are appended to this.</span></div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span><span class=\"comment\"> * Hence the behavior of the public function is resembled</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span><span class=\"comment\"> * by passing an empty treePath.</span></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span><span class=\"comment\"> */</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> PreFunc, <span class=\"keyword\">class</span> LeafFunc, <span class=\"keyword\">class</span> PostFunc></div>\n+<div class=\"foldopen\" id=\"foldopen00164\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\"> 164</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, PreFunc&& preFunc, LeafFunc&& leafFunc, PostFunc&& postFunc)</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">using </span>Tree = std::decay_t<T>;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(Tree::isLeaf) {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> leafFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> preFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> <span class=\"comment\">// check which type of traversal is supported by the tree, prefer dynamic traversal</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<DynamicTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<StaticTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value) {</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// Specialization for dynamic traversal</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keywordflow\">for</span> (std::size_t i = 0; i < tree.degree(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowStaticTraversal::value) {</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"comment\">// Specialization for static traversal</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">auto</span> indices = std::make_index_sequence<Tree::degree()>{};</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> });</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> }</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> postFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> }</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> } <span class=\"comment\">// namespace Detail</span></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> <span class=\"comment\">// Public Interface</span></div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, TreePathType::Type pathType=TreePathType::dynamic></div>\n+<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\"> 218</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>()</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> {</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> <span class=\"keywordflow\">return</span> Detail::leafTreePathTuple<std::decay_t<Tree>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>());</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Visitor></div>\n+<div class=\"foldopen\" id=\"foldopen00239\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\"> 239</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">applyToTree</a>(Tree&& tree, Visitor&& visitor)</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> {</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Detail::applyToTree</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor);</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> NodeFunc></div>\n+<div class=\"foldopen\" id=\"foldopen00254\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\"> 254</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">forEachNode</a>(Tree&& tree, NodeFunc&& nodeFunc)</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> {</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Detail::forEachNode</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), nodeFunc, nodeFunc, NoOp{});</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> LeafFunc></div>\n+<div class=\"foldopen\" id=\"foldopen00269\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\"> 269</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">forEachLeafNode</a>(Tree&& tree, LeafFunc&& leafFunc)</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> {</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Detail::forEachNode</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), NoOp{}, leafFunc, NoOp{});</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> </div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> </div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n+<div class=\"ttc\" id=\"aa00008_html\"><div class=\"ttname\"><a href=\"a00008.html\">childextraction.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00074_html\"><div class=\"ttname\"><a href=\"a00074.html\">visitor.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00090_html_ga29b6b44967c09f379358b0264124c0a7\"><div class=\"ttname\"><a href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">Dune::TypeTree::forEachNode</a></div><div class=\"ttdeci\">void forEachNode(Tree &&tree, NodeFunc &&nodeFunc)</div><div class=\"ttdoc\">Traverse tree and visit each node.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:254</div></div>\n+<div class=\"ttc\" id=\"aa00090_html_ga40f2a5d5435d0ae5ff375e2d54beb973\"><div class=\"ttname\"><a href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">Dune::TypeTree::leafTreePathTuple</a></div><div class=\"ttdeci\">constexpr auto leafTreePathTuple()</div><div class=\"ttdoc\">Create tuple of tree paths to leafs.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:218</div></div>\n+<div class=\"ttc\" id=\"aa00090_html_gad2f9c441b6882fcd11419500df8a56ec\"><div class=\"ttname\"><a href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">Dune::TypeTree::forEachLeafNode</a></div><div class=\"ttdeci\">void forEachLeafNode(Tree &&tree, LeafFunc &&leafFunc)</div><div class=\"ttdoc\">Traverse tree and visit each leaf node.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:269</div></div>\n+<div class=\"ttc\" id=\"aa00090_html_gafebbce1d18f7ddd62e267df3de139334\"><div class=\"ttname\"><a href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(Tree &&tree, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:239</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n+<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a168e4cc76ad223e23b07ce86e81318ea\"><div class=\"ttname\"><a href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Dune::TypeTree::Detail::forEachNode</a></div><div class=\"ttdeci\">void forEachNode(T &&tree, TreePath treePath, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc &&postFunc)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:164</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a199ef6ea1f4fb18e8c5789ca1aab091c\"><div class=\"ttname\"><a href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">Dune::TypeTree::Detail::DynamicTraversalConcept</a></div><div class=\"ttdeci\">decltype((std::declval< Tree >().degree(), std::declval< Tree >().child(0u))) DynamicTraversalConcept</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:43</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a2eab71f00fba61df87a3c0f8872a2a44\"><div class=\"ttname\"><a href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">Dune::TypeTree::Detail::StaticTraversalConcept</a></div><div class=\"ttdeci\">decltype((std::integral_constant< std::size_t, Tree::degree()>{})) StaticTraversalConcept</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_a6dd219b33e36d07c725b68addf01ead7\"><div class=\"ttname\"><a href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Dune::TypeTree::Detail::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(T &&tree, TreePath treePath, V &&visitor)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:97</div></div>\n+<div class=\"ttc\" id=\"aa00102_html_aac044f60050eb4fb71c685c68a187e02\"><div class=\"ttname\"><a href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Dune::TypeTree::Detail::leafTreePathTuple</a></div><div class=\"ttdeci\">constexpr auto leafTreePathTuple(Prefix prefix)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:54</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,48 +1,333 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-typetree.hh\n+traversal.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_HH\n-7#define DUNE_TYPETREE_HH\n+6#ifndef DUNE_TYPETREE_TRAVERSAL_HH\n+7#define DUNE_TYPETREE_TRAVERSAL_HH\n 8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-22\n-23#endif // DUNE_TYPETREE_HH\n-_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\b._\bh_\bh\n-_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b._\bh_\bh\n-_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh\n-_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n-_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+9#include <utility>\n+10\n+11#include <dune/common/hybridutilities.hh>\n+12#include <dune/common/std/type_traits.hh>\n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n+18\n+19namespace _\bD_\bu_\bn_\be {\n+20 namespace TypeTree {\n+21\n+27#ifndef DOXYGEN\n+29 struct NoOp\n+30 {\n+31 template<class... T>\n+32 constexpr void operator()(T&&...) const { /* do nothing */ }\n+33 };\n+34#endif\n+35\n+36 namespace Detail {\n+37\n+38 // SFINAE template check that Tree has a degree() function and a child()\n+function accepting integer indices\n+39 template<class Tree>\n+_\b4_\b0 using _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((\n+41 std::declval<Tree>().degree(),\n+42 std::declval<Tree>().child(0u)\n+43 ));\n+44\n+45 // SFINAE template check that Tree has static (constexpr) function Tree::\n+degree()\n+46 template<class Tree>\n+_\b4_\b7 using _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((\n+48 std::integral_constant<std::size_t, Tree::degree()>{}\n+49 ));\n+50\n+51\n+52 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n+53 std::enable_if_t<Tree::isLeaf, int> = 0>\n+_\b5_\b4 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix)\n+55 {\n+56 return std::make_tuple(prefix);\n+57 }\n+58\n+59 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n+60 std::enable_if_t<not Tree::isLeaf, int> = 0>\n+61 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix);\n+62\n+63 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix, std::\n+size_t... indices,\n+64 std::enable_if_t<(Tree::isComposite or (Tree::isPower and\n+(pathType!=_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc))), int> = 0>\n+_\b6_\b5 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix, std::\n+index_sequence<indices...>)\n+66 {\n+67 return std::tuple_cat(_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be<_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:\n+_\bC_\bh_\bi_\bl_\bd_\b<_\bT_\br_\be_\be_\b,_\bi_\bn_\bd_\bi_\bc_\be_\bs_\b>, pathType>(_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(prefix, Dune::\n+index_constant<indices>{}))...);\n+68 }\n+69\n+70 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix, std::\n+size_t... indices,\n+71 std::enable_if_t<(Tree::isPower and (pathType==_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc)), int>\n+= 0>\n+72 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix, std::\n+index_sequence<indices...>)\n+73 {\n+74 return std::tuple_cat(_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be<_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:\n+_\bC_\bh_\bi_\bl_\bd_\b<_\bT_\br_\be_\be_\b,_\bi_\bn_\bd_\bi_\bc_\be_\bs_\b>, pathType>(_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(prefix, indices))...);\n+75 }\n+76\n+77 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n+78 std::enable_if_t<not Tree::isLeaf, int>>\n+79 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix)\n+80 {\n+81 return Detail::leafTreePathTuple<Tree, pathType>(prefix, std::\n+make_index_sequence<Tree::degree()>{});\n+82 }\n+83\n+84 /* The signature is the same as for the public applyToTree\n+85 * function in Dune::Typetree, despite the additionally passed\n+86 * treePath argument. The path passed here is associated to\n+87 * the tree and the relative paths of the children (wrt. to tree)\n+88 * are appended to this. Hence the behavior of the public function\n+89 * is resembled by passing an empty treePath.\n+90 */\n+91\n+92 /*\n+93 * This is the overload for leaf traversal\n+94 */\n+95 template<class T, class TreePath, class V,\n+96 std::enable_if_t<std::decay_t<T>::isLeaf, int> = 0>\n+_\b9_\b7 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n+98 {\n+99 visitor.leaf(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+100 }\n+101\n+102 /*\n+103 * This is the general overload doing child traversal.\n+104 */\n+105 template<class T, class TreePath, class V,\n+106 std::enable_if_t<not std::decay_t<T>::isLeaf, int> = 0>\n+107 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n+108 {\n+109 using Tree = std::remove_reference_t<T>;\n+110 using Visitor = std::remove_reference_t<V>;\n+111 visitor.pre(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+112\n+113 // check which type of traversal is supported by the tree\n+114 using allowDynamicTraversal = Dune::Std::\n+is_detected<DynamicTraversalConcept,Tree>;\n+115 using allowStaticTraversal = Dune::Std::\n+is_detected<StaticTraversalConcept,Tree>;\n+116\n+117 // the tree must support either dynamic or static traversal\n+118 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n+119\n+120 // the visitor may specify preferred dynamic traversal\n+121 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n+TreePathType::dynamic>;\n+122\n+123 // create a dynamic or static index range\n+124 auto indices = [&]{\n+125 if constexpr(preferDynamicTraversal::value && allowDynamicTraversal::value)\n+126 return Dune::range(std::size_t(tree.degree()));\n+127 else\n+128 return Dune::range(tree.degree());\n+129 }();\n+130\n+131 if constexpr(allowDynamicTraversal::value || allowStaticTraversal::value) {\n+132 Hybrid::forEach(indices, [&](auto i) {\n+133 auto&& _\bc_\bh_\bi_\bl_\bd = tree.child(i);\n+134 using _\bC_\bh_\bi_\bl_\bd = std::decay_t<decltype(_\bc_\bh_\bi_\bl_\bd)>;\n+135\n+136 visitor.beforeChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+137\n+138 // This requires that visitor.in(...) can always be instantiated,\n+139 // even if there's a single child only.\n+140 if (i>0)\n+141 visitor.in(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+142\n+143 constexpr bool visitChild = Visitor::template\n+VisitChild<Tree,Child,TreePath>::value;\n+144 if constexpr(visitChild) {\n+145 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+146 _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(_\bc_\bh_\bi_\bl_\bd, childTreePath, visitor);\n+147 }\n+148\n+149 visitor.afterChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+150 });\n+151 }\n+152 visitor.post(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+153 }\n+154\n+155 /* Traverse tree and visit each node. The signature is the same\n+156 * as for the public forEachNode function in Dune::Typtree,\n+157 * despite the additionally passed treePath argument. The path\n+158 * passed here is associated to the tree and the relative\n+159 * paths of the children (wrt. to tree) are appended to this.\n+160 * Hence the behavior of the public function is resembled\n+161 * by passing an empty treePath.\n+162 */\n+163 template<class T, class TreePath, class PreFunc, class LeafFunc, class\n+PostFunc>\n+_\b1_\b6_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, PreFunc&& preFunc, LeafFunc&&\n+leafFunc, PostFunc&& postFunc)\n+165 {\n+166 using Tree = std::decay_t<T>;\n+167 if constexpr(Tree::isLeaf) {\n+168 leafFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+169 } else {\n+170 preFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+171\n+172 // check which type of traversal is supported by the tree, prefer dynamic\n+traversal\n+173 using allowDynamicTraversal = Dune::Std::\n+is_detected<DynamicTraversalConcept,Tree>;\n+174 using allowStaticTraversal = Dune::Std::\n+is_detected<StaticTraversalConcept,Tree>;\n+175\n+176 // the tree must support either dynamic or static traversal\n+177 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n+178\n+179 if constexpr(allowDynamicTraversal::value) {\n+180 // Specialization for dynamic traversal\n+181 for (std::size_t i = 0; i < tree.degree(); ++i) {\n+182 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+183 _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);\n+184 }\n+185 } else if constexpr(allowStaticTraversal::value) {\n+186 // Specialization for static traversal\n+187 auto indices = std::make_index_sequence<Tree::degree()>{};\n+188 Hybrid::forEach(indices, [&](auto i) {\n+189 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n+190 _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);\n+191 });\n+192 }\n+193 postFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n+194 }\n+195 }\n+196\n+197 } // namespace Detail\n+198\n+199\n+200 /\n+/\n+********************************************************************************\n+201 // Public Interface\n+202 /\n+/\n+********************************************************************************\n+203\n+217 template<class Tree, TreePathType::Type pathType=TreePathType::dynamic>\n+_\b2_\b1_\b8 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be()\n+219 {\n+220 return Detail::leafTreePathTuple<std::decay_t<Tree>, pathType>\n+(_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh());\n+221 }\n+222\n+224\n+238 template<typename Tree, typename Visitor>\n+_\b2_\b3_\b9 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(Tree&& tree, Visitor&& visitor)\n+240 {\n+241 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor);\n+242 }\n+243\n+253 template<class Tree, class NodeFunc>\n+_\b2_\b5_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(Tree&& tree, NodeFunc&& nodeFunc)\n+255 {\n+256 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), nodeFunc, nodeFunc, NoOp{});\n+257 }\n+258\n+268 template<class Tree, class LeafFunc>\n+_\b2_\b6_\b9 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be(Tree&& tree, LeafFunc&& leafFunc)\n+270 {\n+271 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), NoOp{}, leafFunc, NoOp{});\n+272 }\n+273\n+275\n+276 } // namespace TypeTree\n+277} //namespace Dune\n+278\n+279#endif // DUNE_TYPETREE_TRAVERSAL_HH\n _\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bp_\ba_\bi_\br_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n-_\bl_\be_\ba_\bf_\bn_\bo_\bd_\be_\b._\bh_\bh\n-_\bd_\by_\bn_\ba_\bm_\bi_\bc_\bp_\bo_\bw_\be_\br_\bn_\bo_\bd_\be_\b._\bh_\bh\n-_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n-_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bu_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be\n+void forEachNode(Tree &&tree, NodeFunc &&nodeFunc)\n+Traverse tree and visit each node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be\n+constexpr auto leafTreePathTuple()\n+Create tuple of tree paths to leafs.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+void forEachLeafNode(Tree &&tree, LeafFunc &&leafFunc)\n+Traverse tree and visit each leaf node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n+void applyToTree(Tree &&tree, Visitor &&visitor)\n+Apply visitor to TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:239\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+typename impl::_Child< Node, indices... >::type Child\n+Template alias for the type of a child node given by a list of child indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ImplementationDefined child(Node &&node, Indices... indices)\n+Extracts the child of a node given by a sequence of compile-time and run-time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n+T... > &tp, std::size_t i)\n+Appends a run time index to a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto hybridTreePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be\n+void forEachNode(T &&tree, TreePath treePath, PreFunc &&preFunc, LeafFunc\n+&&leafFunc, PostFunc &&postFunc)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt\n+decltype((std::declval< Tree >().degree(), std::declval< Tree >().child(0u)))\n+DynamicTraversalConcept\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt\n+decltype((std::integral_constant< std::size_t, Tree::degree()>{}))\n+StaticTraversalConcept\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n+void applyToTree(T &&tree, TreePath treePath, V &&visitor)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be\n+constexpr auto leafTreePathTuple(Prefix prefix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n+@ dynamic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00062.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00062.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: generictransformationdescriptors.hh File Reference</title>\n+<title>dune-typetree: treepath.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,56 +71,190 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">generictransformationdescriptors.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#typedef-members\">Typedefs</a> |\n+<a href=\"#enum-members\">Enumerations</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">treepath.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <array></code><br />\n-<code>#include <memory></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code><br />\n-<code>#include <dune/common/exceptions.hh></code><br />\n+<div class=\"textblock\"><code>#include <cstddef></code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <iostream></code><br />\n+<code>#include <type_traits></code><br />\n+<code>#include <dune/common/documentation.hh></code><br />\n+<code>#include <dune/common/version.hh></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <dune/common/indices.hh></code><br />\n+<code>#include <dune/common/hybridutilities.hh></code><br />\n+<code>#include <dune/common/typelist.hh></code><br />\n+<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n </div>\n <p><a href=\"a00062_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01200.html\">Dune::TypeTree::GenericLeafNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01392.html\">Dune::TypeTree::HybridTreePath< T ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">A hybrid version of TreePath that supports both compile time and run time indices. <a href=\"a01392.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01428.html\">Dune::TypeTree::TreePathSize< HybridTreePath< index_constant< i >... > ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01208.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01432.html\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01212.html\">Dune::TypeTree::GenericPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01436.html\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01440.html\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< k > > ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01220.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01444.html\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01224.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01448.html\">Dune::TypeTree::TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01452.html\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< k > >, i... ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01232.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01456.html\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... >, i... ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01236.html\">Dune::TypeTree::GenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01460.html\">Dune::TypeTree::TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01464.html\">Dune::TypeTree::TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00105\" id=\"r_a00105\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00105.html\">Dune::TypeTree::TreePathType</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00106\" id=\"r_a00106\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00106.html\">Dune::TypeTree::Literals</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:ga5777c11461f29c81c8d2440ed36dca12\" id=\"r_ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t... i> </td></tr>\n+<tr class=\"memitem:ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga5777c11461f29c81c8d2440ed36dca12\">Dune::TypeTree::StaticTreePath</a> = <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Dune::index_constant< i >... ></td></tr>\n+<tr class=\"separator:ga5777c11461f29c81c8d2440ed36dca12\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n+Enumerations</h2></td></tr>\n+<tr class=\"memitem:a2c22745f087ef4029052be4816e093ce\" id=\"r_a2c22745f087ef4029052be4816e093ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a> { <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a>\n+, <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a>\n+ }</td></tr>\n+<tr class=\"separator:a2c22745f087ef4029052be4816e093ce\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:gaeb32e41118574398d079d0a22a5e1f80\" id=\"r_gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t... i> </td></tr>\n+<tr class=\"memitem:gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">Dune::TypeTree::print_tree_path</a> (std::ostream &os)</td></tr>\n+<tr class=\"separator:gaeb32e41118574398d079d0a22a5e1f80\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaa3668be2162ed006dbd170855d7ef042\" id=\"r_gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t k, std::size_t... i> </td></tr>\n+<tr class=\"memitem:gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaa3668be2162ed006dbd170855d7ef042\">Dune::TypeTree::print_tree_path</a> (std::ostream &os)</td></tr>\n+<tr class=\"separator:gaa3668be2162ed006dbd170855d7ef042\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga98d8d975809eff411fe578ac9e3e4b0e\" id=\"r_ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">Dune::TypeTree::makeTreePath</a> (const T... t)</td></tr>\n+<tr class=\"memdesc:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">helper function to construct a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n+<tr class=\"separator:ga98d8d975809eff411fe578ac9e3e4b0e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga8d8adb5b68d9a6e529f363a10e7207d7\" id=\"r_ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a> (const T &... t)</td></tr>\n+<tr class=\"memdesc:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Constructs a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n+<tr class=\"separator:ga8d8adb5b68d9a6e529f363a10e7207d7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaedb504d472c078d66791c42b190f41f2\" id=\"r_gaedb504d472c078d66791c42b190f41f2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:gaedb504d472c078d66791c42b190f41f2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a> (const T &... t)</td></tr>\n+<tr class=\"memdesc:gaedb504d472c078d66791c42b190f41f2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Constructs a new <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> from the given indices. <br /></td></tr>\n+<tr class=\"separator:gaedb504d472c078d66791c42b190f41f2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga15a231b783d71e9daa350133a71b2b53\" id=\"r_ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &)</td></tr>\n+<tr class=\"memdesc:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the size (number of components) of the given <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga15a231b783d71e9daa350133a71b2b53\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga6e3abac9bca53b1cf72a5a0354b36908\" id=\"r_ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n+<tr class=\"memitem:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">Dune::TypeTree::treePathEntry</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type</td></tr>\n+<tr class=\"memdesc:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the i-th element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga6e3abac9bca53b1cf72a5a0354b36908\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga93fde33df04c0302b1efa4363b4741ab\" id=\"r_ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n+<tr class=\"memitem:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr std::size_t </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">Dune::TypeTree::treePathIndex</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i >={})</td></tr>\n+<tr class=\"memdesc:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns the index value of the i-th element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga93fde33df04c0302b1efa4363b4741ab\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga1af1e09047ae8efddd455c81caed2037\" id=\"r_ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">Dune::TypeTree::back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp) -> decltype(tp.back())</td></tr>\n+<tr class=\"memdesc:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the last element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga1af1e09047ae8efddd455c81caed2037\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\" id=\"r_gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">Dune::TypeTree::front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp) -> decltype(tp.front())</td></tr>\n+<tr class=\"memdesc:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Returns a copy of the first element of the <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga05adc4d23920567c855e19dc2eb59fc3\" id=\"r_ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T..., std::size_t > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, std::size_t i)</td></tr>\n+<tr class=\"memdesc:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Appends a run time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga05adc4d23920567c855e19dc2eb59fc3\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaeaae64b785d097153f72ae54f6bac29d\" id=\"r_gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n+<tr class=\"memitem:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T..., index_constant< i > > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaeaae64b785d097153f72ae54f6bac29d\">Dune::TypeTree::push_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i > i_={})</td></tr>\n+<tr class=\"memdesc:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Appends a compile time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:gaeaae64b785d097153f72ae54f6bac29d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga27078c4dcd99d39e43051584e848544c\" id=\"r_ga27078c4dcd99d39e43051584e848544c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga27078c4dcd99d39e43051584e848544c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::size_t, T... > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">Dune::TypeTree::push_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, std::size_t element)</td></tr>\n+<tr class=\"memdesc:ga27078c4dcd99d39e43051584e848544c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Prepends a run time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga27078c4dcd99d39e43051584e848544c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gaf2f1759e1b0441530258893e71058f80\" id=\"r_gaf2f1759e1b0441530258893e71058f80\"><td class=\"memTemplParams\" colspan=\"2\">template<std::size_t i, typename... T> </td></tr>\n+<tr class=\"memitem:gaf2f1759e1b0441530258893e71058f80\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >, T... > </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gaf2f1759e1b0441530258893e71058f80\">Dune::TypeTree::push_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, index_constant< i > _i={})</td></tr>\n+<tr class=\"memdesc:gaf2f1759e1b0441530258893e71058f80\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Prepends a compile time index to a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:gaf2f1759e1b0441530258893e71058f80\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga54aa7748c17aebfe9407b1a521ea23bd\" id=\"r_ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memTemplParams\" colspan=\"2\">template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n+<tr class=\"memitem:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">Dune::TypeTree::accumulate_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, I i)</td></tr>\n+<tr class=\"memdesc:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid utility that accumulates to the back of a multi-index. <br /></td></tr>\n+<tr class=\"separator:ga54aa7748c17aebfe9407b1a521ea23bd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga288cd3cb18c505ee0a051bc15e07ae0e\" id=\"r_ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memTemplParams\" colspan=\"2\">template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n+<tr class=\"memitem:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">Dune::TypeTree::accumulate_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp, I i)</td></tr>\n+<tr class=\"memdesc:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid utility that accumulates to the front of a multi-index. <br /></td></tr>\n+<tr class=\"separator:ga288cd3cb18c505ee0a051bc15e07ae0e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga5e98f9dd480e4315e6cff83a60a632b2\" id=\"r_ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memTemplParams\" colspan=\"2\">template<class... Head, class... Other> </td></tr>\n+<tr class=\"memitem:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">Dune::TypeTree::join</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< Head... > &head, const Other &... tail)</td></tr>\n+<tr class=\"memdesc:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Join two tree paths into one. <br /></td></tr>\n+<tr class=\"separator:ga5e98f9dd480e4315e6cff83a60a632b2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga44d8621606023f6da4c1ab2437a43a57\" id=\"r_ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T> </td></tr>\n+<tr class=\"memitem:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">Dune::TypeTree::reverse</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n+<tr class=\"memdesc:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Reverses the order of the elements in the path. <br /></td></tr>\n+<tr class=\"separator:ga44d8621606023f6da4c1ab2437a43a57\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga376f28e2bba04847cf4469bf3a3e4752\" id=\"r_ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n+<tr class=\"memitem:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">Dune::TypeTree::pop_front</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n+<tr class=\"memdesc:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Removes first index on a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga376f28e2bba04847cf4469bf3a3e4752\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga712c4c506180db38ab8509f3485985bb\" id=\"r_ga712c4c506180db38ab8509f3485985bb\"><td class=\"memTemplParams\" colspan=\"2\">template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true> </td></tr>\n+<tr class=\"memitem:ga712c4c506180db38ab8509f3485985bb\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">Dune::TypeTree::pop_back</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n+<tr class=\"memdesc:ga712c4c506180db38ab8509f3485985bb\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Removes last index on a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n+<tr class=\"separator:ga712c4c506180db38ab8509f3485985bb\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gabce842333ec51e0fd07d5c7fef49a0ce\" id=\"r_gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memTemplParams\" colspan=\"2\">template<class... S, class... T> </td></tr>\n+<tr class=\"memitem:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr bool </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">Dune::TypeTree::operator==</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< S... > &lhs, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &rhs)</td></tr>\n+<tr class=\"memdesc:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for value equality. <br /></td></tr>\n+<tr class=\"separator:gabce842333ec51e0fd07d5c7fef49a0ce\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:gad7554606efd2f9ee3c2826bdb0587e2e\" id=\"r_gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memTemplParams\" colspan=\"2\">template<class S , S... lhs, class T , T... rhs> </td></tr>\n+<tr class=\"memitem:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#gad7554606efd2f9ee3c2826bdb0587e2e\">Dune::TypeTree::operator==</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< S, lhs >... > &, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< T, rhs >... > &)</td></tr>\n+<tr class=\"memdesc:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Overload for purely static <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s. <br /></td></tr>\n+<tr class=\"separator:gad7554606efd2f9ee3c2826bdb0587e2e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga74a9deebbb4fc0f487d0e868494b374e\" id=\"r_ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memTemplParams\" colspan=\"2\">template<class... S, class... T> </td></tr>\n+<tr class=\"memitem:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">Dune::TypeTree::operator!=</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< S... > &lhs, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &rhs)</td></tr>\n+<tr class=\"memdesc:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for unequality. <br /></td></tr>\n+<tr class=\"separator:ga74a9deebbb4fc0f487d0e868494b374e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga53f7302dc849c8790a69e33c8c45b134\" id=\"r_ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memTemplParams\" colspan=\"2\">template<class S , S... lhs, class T , T... rhs> </td></tr>\n+<tr class=\"memitem:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga53f7302dc849c8790a69e33c8c45b134\">Dune::TypeTree::operator!=</a> (const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< S, lhs >... > &, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< std::integral_constant< T, rhs >... > &)</td></tr>\n+<tr class=\"memdesc:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Compare two static <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>s for unequality. <br /></td></tr>\n+<tr class=\"separator:ga53f7302dc849c8790a69e33c8c45b134\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:af563e3ba39cae1b29145da1b28bc408e\" id=\"r_af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memTemplParams\" colspan=\"2\">template<char... digits> </td></tr>\n+<tr class=\"memitem:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00106.html#af563e3ba39cae1b29145da1b28bc408e\">Dune::TypeTree::Literals::operator""_tp</a> ()</td></tr>\n+<tr class=\"memdesc:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Literal to create treepath. <br /></td></tr>\n+<tr class=\"separator:af563e3ba39cae1b29145da1b28bc408e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:ga0c1ac60b62c3a74db546b04368f319a2\" id=\"r_ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memTemplParams\" colspan=\"2\">template<typename... T> </td></tr>\n+<tr class=\"memitem:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">std::ostream & </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">Dune::TypeTree::operator<<</a> (std::ostream &os, const <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< T... > &tp)</td></tr>\n+<tr class=\"memdesc:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Dumps a <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code> to a stream. <br /></td></tr>\n+<tr class=\"separator:ga0c1ac60b62c3a74db546b04368f319a2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,53 +1,242 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-generictransformationdescriptors.hh File Reference\n-#include <array>\n-#include <memory>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh>\n-#include <dune/common/exceptions.hh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+treepath.hh File Reference\n+#include <cstddef>\n+#include <cassert>\n+#include <iostream>\n+#include <type_traits>\n+#include <dune/common/documentation.hh>\n+#include <dune/common/version.hh>\n+#include <dune/common/typetraits.hh>\n+#include <dune/common/indices.hh>\n+#include <dune/common/hybridutilities.hh>\n+#include <dune/common/typelist.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bT_\b _\b>\n+\u00a0 A hybrid version of TreePath that supports both compile time and run\n+ time indices. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>\n+ _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi\n+ _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi\n+ _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b _\b>_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bj_\b _\b>_\b,\n+ _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bl_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n+ _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>\n+ _\b>_\b,_\b _\bi_\b._\b._\b._\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n- _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bj_\b _\b>_\b,\n+ _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bl_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bi_\b._\b._\b._\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n- _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n+ _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b.\n+ _\b>_\b,_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\bi_\bt_\be_\br_\ba_\bl_\bs\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template<std::size_t... i>\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< Dune::index_constant< i\n+ >... >\n+\u00a0\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:\n+ _\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc , _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc }\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<std::size_t... i>\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh (std::\n+ ostream &os)\n+\u00a0\n+template<std::size_t k, std::size_t... i>\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh (std::\n+ ostream &os)\n+\u00a0\n+template<typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T...\n+ t)\n+\u00a0 helper function to construct a new\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the given indices.\n+\u00a0\n+template<typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh (const T\n+ &... t)\n+\u00a0 Constructs a new _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the\n+ given indices.\n+\u00a0\n+template<typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh (const T &...\n+ t)\n+\u00a0 Constructs a new _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh from the\n+ given indices.\n+\u00a0\n+template<typename... T>\n+ constexpr std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &)\n+\u00a0 Returns the size (number of components)\n+ of the given _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<std::size_t i, typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n+ index_constant< i >={}) -> typename\n+ std::decay< decltype(std::get< i >\n+ (tp._data))>::type\n+\u00a0 Returns a copy of the i-th element of\n+ the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<std::size_t i, typename... T>\n+ constexpr std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n+ index_constant< i >={})\n+\u00a0 Returns the index value of the i-th\n+ element of the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bb_\ba_\bc_\bk (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp) -> decltype\n+ (tp.back())\n+\u00a0 Returns a copy of the last element of\n+ the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<typename... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp) -> decltype\n+ (tp.front())\n+\u00a0 Returns a copy of the first element of\n+ the _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<typename... T>\n+ constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T..., std:: _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk (const\n+ size_t >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, std::size_t\n+ i)\n+\u00a0 Appends a run time index to a\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<std::size_t i, typename... T>\n+ constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T..., _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk (const\n+ index_constant< i > >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n+ index_constant< i > i_={})\n+\u00a0 Appends a compile time index to a\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<typename... T>\n+constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::size_t, _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt (const\n+ T... >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, std::size_t\n+ element)\n+\u00a0 Prepends a run time index to a\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<std::size_t i, typename... T>\n+ constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt (const\n+ index_constant< i >, T... >\u00a0 _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp,\n+ index_constant< i > _i={})\n+\u00a0 Prepends a compile time index to a\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool\n+> = true>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, I i)\n+\u00a0 Hybrid utility that accumulates to the\n+ back of a multi-index.\n+\u00a0\n+template<typename I , typename... T, std::enable_if_t<(sizeof...(T) > 0), bool\n+> = true>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp, I i)\n+\u00a0 Hybrid utility that accumulates to the\n+ front of a multi-index.\n+\u00a0\n+template<class... Head, class... Other>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bj_\bo_\bi_\bn (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< Head... > &head, const\n+ Other &... tail)\n+\u00a0 Join two tree paths into one.\n+\u00a0\n+template<class... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bv_\be_\br_\bs_\be (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n+\u00a0 Reverses the order of the elements in\n+ the path.\n+\u00a0\n+template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n+\u00a0 Removes first index on a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<class... T, std::enable_if_t<(sizeof...(T) > 0), bool > = true>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n+\u00a0 Removes last index on a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh.\n+\u00a0\n+template<class... S, class... T>\n+ constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< S... > &lhs, const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &rhs)\n+\u00a0 Compare two _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for value\n+ equality.\n+\u00a0\n+template<class S , S... lhs, class T , T... rhs>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::integral_constant<\n+ S, lhs >... > &, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n+ std::integral_constant< T, rhs >... > &)\n+\u00a0 Overload for purely static\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs.\n+\u00a0\n+template<class... S, class... T>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b= (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< S... > &lhs, const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &rhs)\n+\u00a0 Compare two _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for\n+ unequality.\n+\u00a0\n+template<class S , S... lhs, class T , T... rhs>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b= (const\n+ _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< std::integral_constant<\n+ S, lhs >... > &, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<\n+ std::integral_constant< T, rhs >... > &)\n+\u00a0 Compare two static _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bhs for\n+ unequality.\n+\u00a0\n+template<char... digits>\n+ constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\bi_\bt_\be_\br_\ba_\bl_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b\"_\b\"_\b__\bt_\bp\n+ ()\n+\u00a0 Literal to create treepath.\n+\u00a0\n+template<typename... T>\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream\n+ &os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh< T... > &tp)\n+\u00a0 Dumps a _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh to a stream.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00062_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00062_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: generictransformationdescriptors.hh Source File</title>\n+<title>dune-typetree: treepath.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,288 +74,734 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">generictransformationdescriptors.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">treepath.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<a href=\"a00062.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n+<a href=\"a00062.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=8 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TREEPATH_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TREEPATH_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00017.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> </div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <iostream></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/documentation.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/version.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <dune/common/typelist.hh></span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00027\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html\"> 27</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01200.html\">GenericLeafNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> {</div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\"> 30</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\">recursive</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\"> 32</a></span> <span class=\"keyword\">typedef</span> TransformedNode <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\"> 33</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<transformed_type> <a class=\"code hl_typedef\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">transformed_storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#afa094041574f399950f3b93f49b295d1\"> 35</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a> <a class=\"code hl_function\" href=\"a01200.html#afa094041574f399950f3b93f49b295d1\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>(s,t);</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\"> 40</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a> <a class=\"code hl_function\" href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>(s,t);</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/fixedcapacitystack.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"comment\">// The Impl namespace collects some free standing functions helper functions</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">namespace </span>Impl {</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">struct </span>check_size_t_impl</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check() {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"keywordflow\">return</span> std::is_same_v<T, std::size_t>;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> }</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> };</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, T v></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">struct </span>check_size_t_impl<std::integral_constant<T,v>></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check() {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keywordflow\">return</span> std::is_same_v<T, std::size_t>;</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> }</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> };</div>\n <div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\"> 45</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">transformed_storage_type</a> <a class=\"code hl_function\" href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> {</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> std::make_shared<transformed_type>(s,t);</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> check_size_t() {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> check_size_t_impl<T>::check();</div>\n <div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> }</div>\n-</div>\n <div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html\"> 54</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01204.html\">TemplatizedGenericPowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\"> 57</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html\"> 60</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01208.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> {</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\"> 62</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC>::type <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\"> 63</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\"> 64</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\">degree</a> = <a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree<type>::value</a>;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\"> 68</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> {</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00074\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\"> 74</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> {</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\"> 80</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00089\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01212.html\"> 89</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01212.html\">GenericPowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01204.html\">TemplatizedGenericPowerNodeTransformation</a><SourceNode,</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> GenericPowerNodeTransformationTemplate<SourceNode,</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> TransformedNode>::template result</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> ></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {};</div>\n-</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> cast_size_t(<span class=\"keyword\">const</span> T & v) {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"comment\">// check that T is an integral type that can be cast to std::size_t</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">static_assert</span>(</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> std::is_convertible_v<T,std::size_t> &&</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> std::is_integral_v<T>,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"comment\">// positivity can only be checked at run-time</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> assert(v >= 0 &&</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> <span class=\"keywordflow\">return</span> std::size_t(v);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> }</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, T v></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> cast_size_t(std::integral_constant<T,v>) {</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"comment\">// check that T is an intergal type that can be cast to std::size_t</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> <span class=\"comment\">// and that v is positive</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">static_assert</span>(</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> std::is_convertible_v<T,std::size_t> &&</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> std::is_integral_v<T> &&</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> v >= 0,</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"stringliteral\">"HybridTreePath indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,v>();</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> <span class=\"comment\">// these are helper functions that help triggering a deprecation warning</span></div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> [[deprecated(<span class=\"stringliteral\">"HybridTreePath index storage should be std::size_t or std::integral_constant<std::size_t,v>!\\n"</span></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"stringliteral\">"Using anything else is deprecated and will not possible after the 2.10 release.\\n"</span></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"stringliteral\">"It is adviced not to specify the template parameters expicitly,\\n"</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"stringliteral\">"but to use the helper functions `hybridTreePath` or `treePath`."</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"stringliteral\">"These take care of converting indices to the appropriate storage."</span>)]]</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<T>) {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"comment\">// specialization of valid index type</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> v></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<std::integral_constant<std::size_t,v>>) {</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> }</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">// specialization of valid index type</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check_storage_type(MetaType<std::size_t>) {</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> }</div>\n <div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n-<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html\"> 100</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01216.html\">TemplatizedGenericDynamicPowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> {</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\"> 103</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keyword\">class </span>HybridTreePath;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n <div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html\"> 106</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01220.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> {</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\"> 108</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC>::type <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\"> 109</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> };</div>\n-</div>\n+<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00105.html\"> 105</a></span> <span class=\"keyword\">namespace </span>TreePathType {</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"> 106</a></span> <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Type</a> { <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">fullyStatic</a>, <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">dynamic</a> };</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01396.html\"> 110</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01396.html\">TreePathSize</a>;</div>\n <div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\"> 113</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01400.html\"> 113</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01400.html\">TreePathPushBack</a>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01404.html\"> 116</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01404.html\">TreePathPushFront</a>;</div>\n <div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00119\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\"> 119</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> {</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01408.html\"> 119</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a>;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01412.html\"> 122</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01412.html\">TreePathFront</a>;</div>\n <div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n-<div class=\"foldopen\" id=\"foldopen00125\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\"> 125</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> {</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(s,t,children);</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>, std::size_t...></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01416.html\"> 125</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a>;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01420.html\"> 128</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01420.html\">TreePathPopFront</a>;</div>\n <div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>, <span class=\"keyword\">typename</span>></div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01424.html\"> 131</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01424.html\">TreePathConcat</a>;</div>\n <div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01224.html\"> 134</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01224.html\">GenericDynamicPowerNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01216.html\">TemplatizedGenericDynamicPowerNodeTransformation</a><SourceNode,</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> GenericDynamicPowerNodeTransformationTemplate<SourceNode,</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> TransformedNode>::template result</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> ></div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> {};</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\"> 134</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a>(std::ostream& os)</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00138\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaa3668be2162ed006dbd170855d7ef042\"> 138</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a>(std::ostream& os)</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> {</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> os << k << <span class=\"stringliteral\">" "</span>;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> <a class=\"code hl_function\" href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">print_tree_path</a><i...>(os);</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n <div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n-<div class=\"foldopen\" id=\"foldopen00145\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html\"> 145</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01228.html\">TemplatizedGenericCompositeNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> {</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#af1318e760833875048c269c471af03e1\"> 148</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01228.html#af1318e760833875048c269c471af03e1\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00151\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html\"> 151</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01232.html\">result</a></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> {</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\"> 153</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC...><a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">::type</a> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\"> 154</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\">storage_type</a>;</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\"> 158</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> {</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">result<TC...>::type</a>(s,t,children...);</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00164\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\"> 164</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">result<TC...>::type</a>(s,t,children...);</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html\"> 157</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a></div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> {</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"comment\">// enable check for dune-typetree 2.10 and above</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span><span class=\"preprocessor\">#if DUNE_VERSION_GTE(TYPETREE,2,10)</span></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// make sure that all indices use std::size_t as the underlying number type</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">static_assert</span>((... && Impl::check_size_t<T>()),</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"stringliteral\">"HybridTreePath index storage must be std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keyword\">public</span>:</div>\n <div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n-<div class=\"foldopen\" id=\"foldopen00170\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\"> 170</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::storage_type <a class=\"code hl_function\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> {</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> <span class=\"keywordflow\">return</span> std::make_shared<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type>(s,t,children...);</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n-<div class=\"foldopen\" id=\"foldopen00179\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01236.html\"> 179</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01236.html\">GenericCompositeNodeTransformation</a></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01228.html\">TemplatizedGenericCompositeNodeTransformation</a><SourceNode,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> GenericCompositeNodeTransformationTemplate<SourceNode,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> Transformation,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> TransformedNode>::template result</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> ></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> </div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> </div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\"> 170</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">index_sequence</a> = std::index_sequence_for<T...>;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\"> 173</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\">HybridTreePath</a>()</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> {</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\"> 179</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\">HybridTreePath</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& tp) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\"> 180</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\">HybridTreePath</a>(<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>&& tp) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> </div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\"> 182</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& <a class=\"code hl_function\" href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\">operator=</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& tp) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\"> 183</a></span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>& <a class=\"code hl_function\" href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\">operator=</a>(<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>&& tp) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\"> 186</a></span> <span class=\"keyword\">explicit</span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\">HybridTreePath</a>(std::tuple<T...> t)</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> : _data(t)</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n-<div class=\"ttc\" id=\"aa00017_html\"><div class=\"ttname\"><a href=\"a00017.html\">powercompositenodetransformationtemplates.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... U,</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> <span class=\"keyword\">typename</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0 && <span class=\"keyword\">sizeof</span>...(U) == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\"> 196</a></span> <span class=\"keyword\">explicit</span> <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\">HybridTreePath</a>(U... t)</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> : _data(t...) <span class=\"comment\">// we assume that all arguments are convertible to the types T...</span></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> [[maybe_unused]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> check =</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> (... && Impl::check_storage_type(MetaType<T>()) );</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00204\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\"> 204</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">index_sequence</a> <a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>()</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> {</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keywordflow\">return</span> {};</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00210\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\"> 210</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">size</a>()</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> {</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">sizeof</span>...(T);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\"> 216</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">static</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\">max_size</a>()</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> <span class=\"keyword\">template</span><std::size_t i,</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > i),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a67c75f087c001270585425859f06bcdc\"> 224</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a67c75f087c001270585425859f06bcdc\">operator[]</a>(Dune::index_constant<i>)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> <span class=\"keywordflow\">return</span> std::get<i>(_data);</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00230\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\"> 230</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\">operator[]</a>(std::size_t pos)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> std::size_t entry = 0;</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> Dune::Hybrid::forEach(<a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>(), [&] (<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keywordflow\">if</span> (i==pos)</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> entry = this-><a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(i);</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> });</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keywordflow\">return</span> entry;</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <span class=\"keyword\">template</span><std::size_t i,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > i),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00243\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\"> 243</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(Dune::index_constant<i> pos = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> {</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> <span class=\"keywordflow\">return</span> std::get<i>(_data);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\"> 249</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\">element</a>(std::size_t pos)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> std::size_t entry = 0;</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> Dune::Hybrid::forEach(<a class=\"code hl_function\" href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">enumerate</a>(), [&] (<span class=\"keyword\">auto</span> i) {</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keywordflow\">if</span> (i==pos)</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> entry = this-><a class=\"code hl_function\" href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">element</a>(i);</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> });</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keywordflow\">return</span> entry;</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> <span class=\"keyword\">template</span><std::size_t n = <span class=\"keyword\">sizeof</span>...(T),</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> std::enable_if_t<(n > 0 && n == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00262\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\"> 262</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>() <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> {</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"keywordflow\">return</span> std::get<0>(_data);</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><std::size_t n = <span class=\"keyword\">sizeof</span>...(T),</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> std::enable_if_t<(n > 0 && n == <span class=\"keyword\">sizeof</span>...(T)),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00270\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\"> 270</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>() <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> {</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keywordflow\">return</span> std::get<n-1>(_data);</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> <span class=\"comment\">// I can't be bothered to make all the external accessors friends of HybridTreePath,</span></div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">// so we'll only hide the data tuple from the user in Doxygen.</span></div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"keyword\">using </span>Data = std::tuple<T...>;</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> Data _data;</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00295\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\"> 295</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(<span class=\"keyword\">const</span> T... t)</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> {</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> <span class=\"comment\">// check that all entries are based on std::size_t</span></div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">static_assert</span>((... && Impl::check_size_t<T>()),</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"stringliteral\">"HybridTreePath indices must be of type std::size_t or std::integral_constant<std::size_t,v>"</span>);</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...>(t...);</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> </div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\"> 312</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(<span class=\"keyword\">const</span> T&... t)</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> {</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(Impl::cast_size_t(t)...);</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\"> 326</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(<span class=\"keyword\">const</span> T&... t)</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> {</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">makeTreePath</a>(Impl::cast_size_t(t)...);</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> </div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\"> 334</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>&)</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> {</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">sizeof</span>...(T);</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> </div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> </div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00357\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\"> 357</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">treePathEntry</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> -> <span class=\"keyword\">typename</span> std::decay<<span class=\"keyword\">decltype</span>(std::get<i>(tp._data))>::type</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> {</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"keywordflow\">return</span> std::get<i>(tp._data);</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> </div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> <span class=\"keyword\">template</span><std::size_t i,<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00380\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\"> 380</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> std::size_t <a class=\"code hl_function\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">treePathIndex</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> = {})</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> {</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> <span class=\"keywordflow\">return</span> std::get<i>(tp._data);</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> </div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> </div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\"> 392</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> -> <span class=\"keyword\">decltype</span>(tp.<a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>())</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> {</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> <span class=\"keywordflow\">return</span> tp.<a class=\"code hl_function\" href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">back</a>();</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> </div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00405\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"> 405</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> -> <span class=\"keyword\">decltype</span>(tp.<a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>())</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> {</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> <span class=\"keywordflow\">return</span> tp.<a class=\"code hl_function\" href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">front</a>();</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\"> 410</span> </div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> </div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00416\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\"> 416</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,std::size_t> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> {</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,std::size_t>(std::tuple_cat(tp._data,std::make_tuple(i)));</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> </div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> </div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00437\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaeaae64b785d097153f72ae54f6bac29d\"> 437</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><T...,index_constant<i>> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> i_ = {})</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> {</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> <span class=\"keywordflow\">return</span> HybridTreePath<T...,index_constant<i> >(std::tuple_cat(tp._data,std::make_tuple(i_)));</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> </div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> </div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00447\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\"> 447</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::size_t,T...> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, std::size_t element)</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> {</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::size_t,T...>(std::tuple_cat(std::make_tuple(element),tp._data));</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> </div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> </div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gaf2f1759e1b0441530258893e71058f80\"> 468</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>,T...> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> _i = {})</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> {</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"keywordflow\">return</span> HybridTreePath<index_constant<i>,T...>(std::tuple_cat(std::make_tuple(_i),tp._data));</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> </div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> </div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I, <span class=\"keyword\">typename</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00486\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\"> 486</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">accumulate_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, I i) {</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> using ::Dune::Hybrid::plus;</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">pop_back</a>(tp), <a class=\"code hl_struct\" href=\"a00940.html\">plus</a>(<a class=\"code hl_function\" href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">back</a>(tp), i));</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> </div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"> 491</span> </div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> </div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> I, <span class=\"keyword\">typename</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00505\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\"> 505</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">accumulate_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, I i) {</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> using ::Dune::Hybrid::plus;</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">push_front</a>(<a class=\"code hl_function\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">pop_front</a>(tp), <a class=\"code hl_struct\" href=\"a00940.html\">plus</a>(<a class=\"code hl_function\" href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">front</a>(tp), i));</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"> 508</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> </div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... Head, <span class=\"keyword\">class</span>... Other></div>\n+<div class=\"foldopen\" id=\"foldopen00512\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\"> 512</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">join</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Head...></a>& head, <span class=\"keyword\">const</span> Other&... tail) {</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\"> 513</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">TypeTree::HybridTreePath</a>{std::tuple_cat(head._data, tail._data...)};</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> </div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00518\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\"> 518</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">reverse</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp) {</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> <span class=\"keyword\">constexpr</span> std::size_t size = <span class=\"keyword\">sizeof</span>...(T);</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>(tp[index_constant<size-i-1>{}] ...);</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> }, std::make_index_sequence<size>{});</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"> 524</span> </div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> </div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00530\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\"> 530</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">pop_front</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"> 531</span> {</div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"> 532</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"> 533</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>{std::make_tuple(std::get<i+1>(tp._data)...)};</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"> 534</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(T) - 1)>{});</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"> 535</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> </div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"> 541</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... T, std::enable_if_t<(<span class=\"keyword\">sizeof</span>...(T) > 0),<span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00542\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\"> 542</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">pop_back</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> {</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\"> 545</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a>{std::make_tuple(std::get<i>(tp._data)...)};</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(T) - 1)>{});</div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\"> 547</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"> 548</span> </div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\"> 550</span> </div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\"> 558</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... S, <span class=\"keyword\">class</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00559\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\"> 559</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">operator==</a>(</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"> 560</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<S...></a>& lhs,</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"> 561</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& rhs)</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"> 562</span> {</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\"> 563</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> (<span class=\"keyword\">sizeof</span>...(S) == <span class=\"keyword\">sizeof</span>...(T)) {</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\"> 564</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span> ((Dune::IsInteroperable<S,T>::value &&...)) {</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"> 565</span> <span class=\"keywordflow\">return</span> unpackIntegerSequence([&](<span class=\"keyword\">auto</span>... i){</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"> 566</span> <span class=\"keywordflow\">return</span> ((std::get<i>(lhs._data) == std::get<i>(rhs._data)) &&...);</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\"> 567</span> }, std::make_index_sequence<(<span class=\"keyword\">sizeof</span>...(S))>{});</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\"> 568</span> } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\"> 569</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"> 570</span> }</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\"> 571</span> } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\"> 572</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"> 573</span> }</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"> 574</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"> 575</span> </div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> </div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>S, S... lhs, <span class=\"keyword\">class </span>T, T... rhs></div>\n+<div class=\"foldopen\" id=\"foldopen00583\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#gad7554606efd2f9ee3c2826bdb0587e2e\"> 583</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">operator==</a>(</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\"> 584</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<S,lhs>...>&,</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"> 585</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<T,rhs>...>&)</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\"> 586</span> {</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> <span class=\"keywordflow\">return</span> std::bool_constant<<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(lhs...) == <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(rhs...)>{};</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> </div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> </div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span>... S, <span class=\"keyword\">class</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00593\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\"> 593</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">operator!=</a>(</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<S...></a>& lhs,</div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& rhs)</div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> {</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> <span class=\"keywordflow\">return</span> !(lhs == rhs);</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> </div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>S, S... lhs, <span class=\"keyword\">class </span>T, T... rhs></div>\n+<div class=\"foldopen\" id=\"foldopen00602\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga53f7302dc849c8790a69e33c8c45b134\"> 602</a></span> [[nodiscard]] <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">operator!=</a>(</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<S,lhs>...>&,</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><std::integral_constant<T,rhs>...>&)</div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> {</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\"> 606</span> <span class=\"keywordflow\">return</span> std::bool_constant<<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(lhs...) != <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(rhs...)>{};</div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"> 607</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\"> 608</span> </div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\"> 609</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00610\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00106.html\"> 610</a></span> <span class=\"keyword\">inline</span> <span class=\"keyword\">namespace </span>Literals {</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\"> 611</span> </div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\"> 613</span> </div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span> <span class=\"keyword\">template</span> <<span class=\"keywordtype\">char</span>... digits></div>\n+<div class=\"foldopen\" id=\"foldopen00618\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00106.html#af563e3ba39cae1b29145da1b28bc408e\"> 618</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <span class=\"keyword\">operator</span><span class=\"stringliteral\">""</span> _tp()</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\"> 619</span> {</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> <span class=\"keyword\">using namespace </span>Dune::Indices::Literals;</div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"> 621</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(<span class=\"keyword\">operator</span><span class=\"stringliteral\">""</span>_ic<digits...>());</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\"> 622</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\"> 623</span> </div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\"> 624</span> } <span class=\"comment\">// end namespace Literals</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\"> 625</span> </div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\"> 626</span> </div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00628\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01428.html\"> 628</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01396.html\">TreePathSize</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...> ></div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\"> 629</span> : <span class=\"keyword\">public</span> index_constant<sizeof...(i)></div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> </div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> </div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00634\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01432.html\"> 634</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01400.html\">TreePathPushBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,k></div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> {</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\"> 636</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...,index_constant<k>> <a class=\"code hl_typedef\" href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\"> 637</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> </div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00640\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01436.html\"> 640</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01404.html\">TreePathPushFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,k></div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\"> 641</span> {</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\"> 642</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<k></a>,index_constant<i>...> <a class=\"code hl_typedef\" href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\"> 643</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\"> 644</span> </div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\"> 645</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00646\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01440.html\"> 646</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>>></div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\"> 647</span> : <span class=\"keyword\">public</span> index_constant<k></div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"> 648</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span> </div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"> 650</span> <span class=\"keyword\">template</span><std::size_t j, std::size_t k, std::size_t... l></div>\n+<div class=\"foldopen\" id=\"foldopen00651\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01444.html\"> 651</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<j>,index_constant<k>,index_constant<l>...>></div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\"> 652</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01408.html\">TreePathBack</a><HybridTreePath<index_constant<k>,index_constant<l>...>></div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\"> 653</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\"> 654</span> </div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\"> 655</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00656\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01448.html\"> 656</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01412.html\">TreePathFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>,index_constant<i>...>></div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\"> 657</span> : <span class=\"keyword\">public</span> index_constant<k></div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> </div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\"> 660</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00661\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01452.html\"> 661</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>>,i...></div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\"> 662</span> {</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\"> 663</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...> <a class=\"code hl_typedef\" href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\"> 664</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\"> 665</span> </div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> <span class=\"keyword\">template</span><std::size_t j,</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> std::size_t k,</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> std::size_t... l,</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00670\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01456.html\"> 670</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<j>,index_constant<k>,index_constant<l>...>,i...></div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01416.html\">TreePathPopBack</a><HybridTreePath<index_constant<k>,index_constant<l>...>,i...,j></div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\"> 672</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\"> 673</span> </div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"> 674</span> <span class=\"keyword\">template</span><std::size_t k, std::size_t... i></div>\n+<div class=\"foldopen\" id=\"foldopen00675\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01460.html\"> 675</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01420.html\">TreePathPopFront</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>,index_constant<i>...> ></div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\"> 676</span> {</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\"> 677</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...> <a class=\"code hl_typedef\" href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\"> 678</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\"> 679</span> </div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\"> 680</span> <span class=\"keyword\">template</span><std::size_t... i, std::size_t... k></div>\n+<div class=\"foldopen\" id=\"foldopen00681\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01464.html\"> 681</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01424.html\">TreePathConcat</a><<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<i>...>,<a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath</a><index_constant<k>...> ></div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\"> 682</span> {</div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\"> 683</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<index_constant<i></a>...,index_constant<k>...> <a class=\"code hl_typedef\" href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\"> 684</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\"> 685</span> </div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\"> 686</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\"> 687</span> </div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\"> 688</span> <span class=\"keyword\">namespace </span>impl {</div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\"> 689</span> </div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"> 690</span> <span class=\"comment\">// end of recursion</span></div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\"> 691</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\"> 692</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\"> 693</span> (i == <span class=\"keyword\">sizeof</span>...(T))</div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\"> 694</span> >::type</div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\"> 695</span> print_hybrid_tree_path(std::ostream& os, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp, index_constant<i> _i)</div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\"> 696</span> {}</div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\"> 697</span> </div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\"> 698</span> <span class=\"comment\">// print current entry and recurse</span></div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\"> 699</span> <span class=\"keyword\">template</span><std::size_t i, <span class=\"keyword\">typename</span>... T></div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\"> 700</span> <span class=\"keyword\">typename</span> std::enable_if<</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\"> 701</span> (i < <span class=\"keyword\">sizeof</span>...(T))</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\"> 702</span> >::type</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\"> 703</span> print_hybrid_tree_path(std::ostream& os, <span class=\"keyword\">const</span> HybridTreePath<T...>& tp, index_constant<i> _i)</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\"> 704</span> {</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"> 705</span> os << <a class=\"code hl_function\" href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">treePathIndex</a>(tp,_i) << <span class=\"stringliteral\">" "</span>;</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"> 706</span> print_hybrid_tree_path(os,tp,index_constant<i+1>{});</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> }</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\"> 708</span> </div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> } <span class=\"comment\">// namespace impl</span></div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\"> 710</span> </div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\"> 711</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\"> 712</span> </div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\"> 714</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... T></div>\n+<div class=\"foldopen\" id=\"foldopen00715\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\"> 715</a></span> std::ostream& <a class=\"code hl_function\" href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">operator<<</a>(std::ostream& os, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<T...></a>& tp)</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"> 716</span> {</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\"> 717</span> os << <span class=\"stringliteral\">"HybridTreePath< "</span>;</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\"> 718</span> impl::print_hybrid_tree_path(os, tp, index_constant<0>{});</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\"> 719</span> os << <span class=\"stringliteral\">">"</span>;</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\"> 720</span> <span class=\"keywordflow\">return</span> os;</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\"> 721</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\"> 722</span> </div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\"> 723</span> <span class=\"keyword\">template</span><std::size_t... i></div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00093.html#ga5777c11461f29c81c8d2440ed36dca12\"> 724</a></span> <span class=\"keyword\">using </span><a class=\"code hl_class\" href=\"a01392.html\">StaticTreePath</a> = <a class=\"code hl_class\" href=\"a01392.html\">HybridTreePath<Dune::index_constant<i></a>...>;</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\"> 725</span> </div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\"> 727</span> </div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\"> 728</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\"> 729</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\"> 730</span> </div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\"> 731</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TREEPATH_HH</span></div>\n+<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">fixedcapacitystack.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga0c1ac60b62c3a74db546b04368f319a2\"><div class=\"ttname\"><a href=\"a00093.html#ga0c1ac60b62c3a74db546b04368f319a2\">Dune::TypeTree::operator<<</a></div><div class=\"ttdeci\">std::ostream & operator<<(std::ostream &os, const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Dumps a HybridTreePath to a stream.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:715</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga1af1e09047ae8efddd455c81caed2037\"><div class=\"ttname\"><a href=\"a00093.html#ga1af1e09047ae8efddd455c81caed2037\">Dune::TypeTree::back</a></div><div class=\"ttdeci\">constexpr auto back(const HybridTreePath< T... > &tp) -> decltype(tp.back())</div><div class=\"ttdoc\">Returns a copy of the last element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:392</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga27078c4dcd99d39e43051584e848544c\"><div class=\"ttname\"><a href=\"a00093.html#ga27078c4dcd99d39e43051584e848544c\">Dune::TypeTree::push_front</a></div><div class=\"ttdeci\">constexpr HybridTreePath< std::size_t, T... > push_front(const HybridTreePath< T... > &tp, std::size_t element)</div><div class=\"ttdoc\">Prepends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:447</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga288cd3cb18c505ee0a051bc15e07ae0e\"><div class=\"ttname\"><a href=\"a00093.html#ga288cd3cb18c505ee0a051bc15e07ae0e\">Dune::TypeTree::accumulate_front</a></div><div class=\"ttdeci\">constexpr auto accumulate_front(const HybridTreePath< T... > &tp, I i)</div><div class=\"ttdoc\">Hybrid utility that accumulates to the front of a multi-index.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:505</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga376f28e2bba04847cf4469bf3a3e4752\"><div class=\"ttname\"><a href=\"a00093.html#ga376f28e2bba04847cf4469bf3a3e4752\">Dune::TypeTree::pop_front</a></div><div class=\"ttdeci\">constexpr auto pop_front(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Removes first index on a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:530</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga44d8621606023f6da4c1ab2437a43a57\"><div class=\"ttname\"><a href=\"a00093.html#ga44d8621606023f6da4c1ab2437a43a57\">Dune::TypeTree::reverse</a></div><div class=\"ttdeci\">constexpr auto reverse(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Reverses the order of the elements in the path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:518</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga54aa7748c17aebfe9407b1a521ea23bd\"><div class=\"ttname\"><a href=\"a00093.html#ga54aa7748c17aebfe9407b1a521ea23bd\">Dune::TypeTree::accumulate_back</a></div><div class=\"ttdeci\">constexpr auto accumulate_back(const HybridTreePath< T... > &tp, I i)</div><div class=\"ttdoc\">Hybrid utility that accumulates to the back of a multi-index.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:486</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga5e98f9dd480e4315e6cff83a60a632b2\"><div class=\"ttname\"><a href=\"a00093.html#ga5e98f9dd480e4315e6cff83a60a632b2\">Dune::TypeTree::join</a></div><div class=\"ttdeci\">constexpr auto join(const HybridTreePath< Head... > &head, const Other &... tail)</div><div class=\"ttdoc\">Join two tree paths into one.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:512</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga6e3abac9bca53b1cf72a5a0354b36908\"><div class=\"ttname\"><a href=\"a00093.html#ga6e3abac9bca53b1cf72a5a0354b36908\">Dune::TypeTree::treePathEntry</a></div><div class=\"ttdeci\">constexpr auto treePathEntry(const HybridTreePath< T... > &tp, index_constant< i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type</div><div class=\"ttdoc\">Returns a copy of the i-th element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:357</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga712c4c506180db38ab8509f3485985bb\"><div class=\"ttname\"><a href=\"a00093.html#ga712c4c506180db38ab8509f3485985bb\">Dune::TypeTree::pop_back</a></div><div class=\"ttdeci\">constexpr auto pop_back(const HybridTreePath< T... > &tp)</div><div class=\"ttdoc\">Removes last index on a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:542</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga74a9deebbb4fc0f487d0e868494b374e\"><div class=\"ttname\"><a href=\"a00093.html#ga74a9deebbb4fc0f487d0e868494b374e\">Dune::TypeTree::operator!=</a></div><div class=\"ttdeci\">constexpr auto operator!=(const HybridTreePath< S... > &lhs, const HybridTreePath< T... > &rhs)</div><div class=\"ttdoc\">Compare two HybridTreePaths for unequality.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:593</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga93fde33df04c0302b1efa4363b4741ab\"><div class=\"ttname\"><a href=\"a00093.html#ga93fde33df04c0302b1efa4363b4741ab\">Dune::TypeTree::treePathIndex</a></div><div class=\"ttdeci\">constexpr std::size_t treePathIndex(const HybridTreePath< T... > &tp, index_constant< i >={})</div><div class=\"ttdoc\">Returns the index value of the i-th element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:380</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga98d8d975809eff411fe578ac9e3e4b0e\"><div class=\"ttname\"><a href=\"a00093.html#ga98d8d975809eff411fe578ac9e3e4b0e\">Dune::TypeTree::makeTreePath</a></div><div class=\"ttdeci\">constexpr auto makeTreePath(const T... t)</div><div class=\"ttdoc\">helper function to construct a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:295</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gabce842333ec51e0fd07d5c7fef49a0ce\"><div class=\"ttname\"><a href=\"a00093.html#gabce842333ec51e0fd07d5c7fef49a0ce\">Dune::TypeTree::operator==</a></div><div class=\"ttdeci\">constexpr bool operator==(const HybridTreePath< S... > &lhs, const HybridTreePath< T... > &rhs)</div><div class=\"ttdoc\">Compare two HybridTreePaths for value equality.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:559</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaeb32e41118574398d079d0a22a5e1f80\"><div class=\"ttname\"><a href=\"a00093.html#gaeb32e41118574398d079d0a22a5e1f80\">Dune::TypeTree::print_tree_path</a></div><div class=\"ttdeci\">void print_tree_path(std::ostream &os)</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:134</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_gaf9a0aaf2bf1ec3f7d7e53c34863b6471\"><div class=\"ttname\"><a href=\"a00093.html#gaf9a0aaf2bf1ec3f7d7e53c34863b6471\">Dune::TypeTree::front</a></div><div class=\"ttdeci\">constexpr auto front(const HybridTreePath< T... > &tp) -> decltype(tp.front())</div><div class=\"ttdoc\">Returns a copy of the first element of the HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:405</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01200_html\"><div class=\"ttname\"><a href=\"a01200.html\">Dune::TypeTree::GenericLeafNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:28</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_a56ff1d056f549d38a889a5f6201d7c2b\"><div class=\"ttname\"><a href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">Dune::TypeTree::GenericLeafNodeTransformation::transformed_type</a></div><div class=\"ttdeci\">TransformedNode transformed_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:32</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_a78d2e8afed4a03be36b8c8b6d5d5533b\"><div class=\"ttname\"><a href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">Dune::TypeTree::GenericLeafNodeTransformation::transformed_storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< transformed_type > transformed_storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:33</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_a7da405da31c1d9126a215285950cd12d\"><div class=\"ttname\"><a href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\">Dune::TypeTree::GenericLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:40</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_aad84fe33720a00e3d6b140095919e3e2\"><div class=\"ttname\"><a href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\">Dune::TypeTree::GenericLeafNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:30</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_ae0f0319b7ea5a1ee562d64c553e18631\"><div class=\"ttname\"><a href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\">Dune::TypeTree::GenericLeafNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:45</div></div>\n-<div class=\"ttc\" id=\"aa01200_html_afa094041574f399950f3b93f49b295d1\"><div class=\"ttname\"><a href=\"a01200.html#afa094041574f399950f3b93f49b295d1\">Dune::TypeTree::GenericLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceNode &s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:35</div></div>\n-<div class=\"ttc\" id=\"aa01204_html\"><div class=\"ttname\"><a href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:55</div></div>\n-<div class=\"ttc\" id=\"aa01204_html_a3d9a9e0f27a5e475276e4205621e5c79\"><div class=\"ttname\"><a href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:80</div></div>\n-<div class=\"ttc\" id=\"aa01204_html_ab42ec41914479dc39213ffbf0b96fcbe\"><div class=\"ttname\"><a href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01204_html_ae10134b6435c658d56d2a37c78507a05\"><div class=\"ttname\"><a href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:74</div></div>\n-<div class=\"ttc\" id=\"aa01204_html_af11cbb8f56e5e0f62cd20c76e0f0c8e7\"><div class=\"ttname\"><a href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:68</div></div>\n-<div class=\"ttc\" id=\"aa01208_html\"><div class=\"ttname\"><a href=\"a01208.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:61</div></div>\n-<div class=\"ttc\" id=\"aa01208_html_a2718d8db626a4e44fab6ae162d3a8159\"><div class=\"ttname\"><a href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:62</div></div>\n-<div class=\"ttc\" id=\"aa01208_html_ab1aa077f01c3d1686ab63b872f093ed4\"><div class=\"ttname\"><a href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::degree</a></div><div class=\"ttdeci\">static const std::size_t degree</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:64</div></div>\n-<div class=\"ttc\" id=\"aa01208_html_adf9e43bec2ce06621f833d057ff40e44\"><div class=\"ttname\"><a href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:63</div></div>\n-<div class=\"ttc\" id=\"aa01212_html\"><div class=\"ttname\"><a href=\"a01212.html\">Dune::TypeTree::GenericPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:96</div></div>\n-<div class=\"ttc\" id=\"aa01216_html\"><div class=\"ttname\"><a href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:101</div></div>\n-<div class=\"ttc\" id=\"aa01216_html_a1d0bd277a0159043e898b4a20597d240\"><div class=\"ttname\"><a href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:119</div></div>\n-<div class=\"ttc\" id=\"aa01216_html_a36d08b6a82553e52143dc485bc87282e\"><div class=\"ttname\"><a href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:103</div></div>\n-<div class=\"ttc\" id=\"aa01216_html_a63e0d400d764a3dc8d5f7405e8322c6a\"><div class=\"ttname\"><a href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa01216_html_a8c26231252b44ac96911a148c7167635\"><div class=\"ttname\"><a href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:125</div></div>\n-<div class=\"ttc\" id=\"aa01220_html\"><div class=\"ttname\"><a href=\"a01220.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:107</div></div>\n-<div class=\"ttc\" id=\"aa01220_html_a91eb0b26c6593dc47b7b05ccea59b44d\"><div class=\"ttname\"><a href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:108</div></div>\n-<div class=\"ttc\" id=\"aa01220_html_ad459c392296a41aa198499c721f8914b\"><div class=\"ttname\"><a href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:109</div></div>\n-<div class=\"ttc\" id=\"aa01224_html\"><div class=\"ttname\"><a href=\"a01224.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:141</div></div>\n-<div class=\"ttc\" id=\"aa01228_html\"><div class=\"ttname\"><a href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:146</div></div>\n-<div class=\"ttc\" id=\"aa01228_html_a2673a334b31c21643e21969c0ac6a98a\"><div class=\"ttname\"><a href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:158</div></div>\n-<div class=\"ttc\" id=\"aa01228_html_a84dabf5dfd5db413b81069fb712e9019\"><div class=\"ttname\"><a href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:170</div></div>\n-<div class=\"ttc\" id=\"aa01228_html_a91d90ba3bb91b6d7bb7d75d8995251e4\"><div class=\"ttname\"><a href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:164</div></div>\n-<div class=\"ttc\" id=\"aa01228_html_af1318e760833875048c269c471af03e1\"><div class=\"ttname\"><a href=\"a01228.html#af1318e760833875048c269c471af03e1\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:148</div></div>\n-<div class=\"ttc\" id=\"aa01232_html\"><div class=\"ttname\"><a href=\"a01232.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:152</div></div>\n-<div class=\"ttc\" id=\"aa01232_html_a9c7f4657753bbb8afcecb5be7ed09264\"><div class=\"ttname\"><a href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC... >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:153</div></div>\n-<div class=\"ttc\" id=\"aa01232_html_add8b889493a0a7300736fb8ceeb52e64\"><div class=\"ttname\"><a href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:154</div></div>\n-<div class=\"ttc\" id=\"aa01236_html\"><div class=\"ttname\"><a href=\"a01236.html\">Dune::TypeTree::GenericCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:186</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a></div><div class=\"ttdeci\">@ fullyStatic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00940_html\"><div class=\"ttname\"><a href=\"a00940.html\">Dune::TypeTree::plus</a></div><div class=\"ttdoc\">Statically combine two values of type result_type using +.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa01392_html\"><div class=\"ttname\"><a href=\"a01392.html\">Dune::TypeTree::HybridTreePath</a></div><div class=\"ttdoc\">A hybrid version of TreePath that supports both compile time and run time indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:158</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a0b9b3687a09eafa07cbb87b04cc378b8\"><div class=\"ttname\"><a href=\"a01392.html#a0b9b3687a09eafa07cbb87b04cc378b8\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(HybridTreePath &&tp)=default</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a1f02aa4b46556df6171102cc1c484054\"><div class=\"ttname\"><a href=\"a01392.html#a1f02aa4b46556df6171102cc1c484054\">Dune::TypeTree::HybridTreePath::back</a></div><div class=\"ttdeci\">constexpr auto back() const</div><div class=\"ttdoc\">Get the last index value. Only available in non-empty paths.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:270</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a246b0b6f95fd2bf301c70d3052de7d55\"><div class=\"ttname\"><a href=\"a01392.html#a246b0b6f95fd2bf301c70d3052de7d55\">Dune::TypeTree::HybridTreePath::operator=</a></div><div class=\"ttdeci\">constexpr HybridTreePath & operator=(const HybridTreePath &tp)=default</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a28fdbb809d45ff47cc172bb566d4b993\"><div class=\"ttname\"><a href=\"a01392.html#a28fdbb809d45ff47cc172bb566d4b993\">Dune::TypeTree::HybridTreePath::element</a></div><div class=\"ttdeci\">constexpr std::size_t element(std::size_t pos) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:249</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a3062592769d0ba278f7574e8c7824623\"><div class=\"ttname\"><a href=\"a01392.html#a3062592769d0ba278f7574e8c7824623\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(std::tuple< T... > t)</div><div class=\"ttdoc\">Constructor from a std::tuple</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:186</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a387399af83ab32d85b9a71fe4978852f\"><div class=\"ttname\"><a href=\"a01392.html#a387399af83ab32d85b9a71fe4978852f\">Dune::TypeTree::HybridTreePath::operator=</a></div><div class=\"ttdeci\">constexpr HybridTreePath & operator=(HybridTreePath &&tp)=default</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a483f1790095b9ff647d3a5b268ae222b\"><div class=\"ttname\"><a href=\"a01392.html#a483f1790095b9ff647d3a5b268ae222b\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(U... t)</div><div class=\"ttdoc\">Constructor from arguments.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:196</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a48b3cb51dd054fde7e8731bcf33594c5\"><div class=\"ttname\"><a href=\"a01392.html#a48b3cb51dd054fde7e8731bcf33594c5\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:173</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a56ab4d42099dcf6580da3b36ab111887\"><div class=\"ttname\"><a href=\"a01392.html#a56ab4d42099dcf6580da3b36ab111887\">Dune::TypeTree::HybridTreePath::element</a></div><div class=\"ttdeci\">constexpr auto element(Dune::index_constant< i > pos={}) const</div><div class=\"ttdoc\">Get the last index value.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:243</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a62f585a41d47228b10a074ec87f6cd69\"><div class=\"ttname\"><a href=\"a01392.html#a62f585a41d47228b10a074ec87f6cd69\">Dune::TypeTree::HybridTreePath::size</a></div><div class=\"ttdeci\">static constexpr std::size_t size()</div><div class=\"ttdoc\">Get the size (length) of this path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:210</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a67c75f087c001270585425859f06bcdc\"><div class=\"ttname\"><a href=\"a01392.html#a67c75f087c001270585425859f06bcdc\">Dune::TypeTree::HybridTreePath::operator[]</a></div><div class=\"ttdeci\">constexpr auto operator[](Dune::index_constant< i >) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:224</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a9472def425f9117d5ad5e7c5ea1ebde2\"><div class=\"ttname\"><a href=\"a01392.html#a9472def425f9117d5ad5e7c5ea1ebde2\">Dune::TypeTree::HybridTreePath::front</a></div><div class=\"ttdeci\">constexpr auto front() const</div><div class=\"ttdoc\">Get the first index value. Only available in non-empty paths.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:262</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_a9a13c90fcc1a80b4a643b70ce7133296\"><div class=\"ttname\"><a href=\"a01392.html#a9a13c90fcc1a80b4a643b70ce7133296\">Dune::TypeTree::HybridTreePath::enumerate</a></div><div class=\"ttdeci\">static constexpr index_sequence enumerate()</div><div class=\"ttdoc\">Returns an index_sequence for enumerating the components of this HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:204</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_aa075c63ba91432ea1503889505c0971e\"><div class=\"ttname\"><a href=\"a01392.html#aa075c63ba91432ea1503889505c0971e\">Dune::TypeTree::HybridTreePath::HybridTreePath</a></div><div class=\"ttdeci\">constexpr HybridTreePath(const HybridTreePath &tp)=default</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_ac0eef58cfd736ae96cf148d244130844\"><div class=\"ttname\"><a href=\"a01392.html#ac0eef58cfd736ae96cf148d244130844\">Dune::TypeTree::HybridTreePath::operator[]</a></div><div class=\"ttdeci\">constexpr std::size_t operator[](std::size_t pos) const</div><div class=\"ttdoc\">Get the index value at position pos.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:230</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_af15c60b9e36cc5a8964014c6dd68cf84\"><div class=\"ttname\"><a href=\"a01392.html#af15c60b9e36cc5a8964014c6dd68cf84\">Dune::TypeTree::HybridTreePath::max_size</a></div><div class=\"ttdeci\">static constexpr std::size_t max_size()</div><div class=\"ttdoc\">Get the size (length) of this path.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:216</div></div>\n+<div class=\"ttc\" id=\"aa01392_html_afb240bc79a76c347343ff7ff4de81e7f\"><div class=\"ttname\"><a href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">Dune::TypeTree::HybridTreePath::index_sequence</a></div><div class=\"ttdeci\">std::index_sequence_for< T... > index_sequence</div><div class=\"ttdoc\">An index_sequence for the entries in this HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:170</div></div>\n+<div class=\"ttc\" id=\"aa01396_html\"><div class=\"ttname\"><a href=\"a01396.html\">Dune::TypeTree::TreePathSize</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:110</div></div>\n+<div class=\"ttc\" id=\"aa01400_html\"><div class=\"ttname\"><a href=\"a01400.html\">Dune::TypeTree::TreePathPushBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa01404_html\"><div class=\"ttname\"><a href=\"a01404.html\">Dune::TypeTree::TreePathPushFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:116</div></div>\n+<div class=\"ttc\" id=\"aa01408_html\"><div class=\"ttname\"><a href=\"a01408.html\">Dune::TypeTree::TreePathBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:119</div></div>\n+<div class=\"ttc\" id=\"aa01412_html\"><div class=\"ttname\"><a href=\"a01412.html\">Dune::TypeTree::TreePathFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:122</div></div>\n+<div class=\"ttc\" id=\"aa01416_html\"><div class=\"ttname\"><a href=\"a01416.html\">Dune::TypeTree::TreePathPopBack</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:125</div></div>\n+<div class=\"ttc\" id=\"aa01420_html\"><div class=\"ttname\"><a href=\"a01420.html\">Dune::TypeTree::TreePathPopFront</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa01424_html\"><div class=\"ttname\"><a href=\"a01424.html\">Dune::TypeTree::TreePathConcat</a></div><div class=\"ttdef\"><b>Definition</b> treepath.hh:131</div></div>\n+<div class=\"ttc\" id=\"aa01432_html_aefbb54e742b2ca3f1950555744ac8164\"><div class=\"ttname\"><a href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >..., index_constant< k > > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:636</div></div>\n+<div class=\"ttc\" id=\"aa01436_html_a43ee9f962a011d8f93d3849c59370640\"><div class=\"ttname\"><a href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< k >, index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:642</div></div>\n+<div class=\"ttc\" id=\"aa01452_html_a152d8da9bd9d3d37a29fcb321baae6c2\"><div class=\"ttname\"><a href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< k > >, i... >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:663</div></div>\n+<div class=\"ttc\" id=\"aa01460_html_ab54b57efb5a8329a61818956bbc27a8a\"><div class=\"ttname\"><a href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\">Dune::TypeTree::TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:677</div></div>\n+<div class=\"ttc\" id=\"aa01464_html_ada5d2db63bce0172c5fd4ef8cea79c19\"><div class=\"ttname\"><a href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\">Dune::TypeTree::TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > >::type</a></div><div class=\"ttdeci\">HybridTreePath< index_constant< i >..., index_constant< k >... > type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:683</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,347 +1,812 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-generictransformationdescriptors.hh\n+treepath.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=4 sw=2 sts=2:\n+1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=8 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n-7#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n+6#ifndef DUNE_TYPETREE_TREEPATH_HH\n+7#define DUNE_TYPETREE_TREEPATH_HH\n 8\n-9#include <array>\n-10#include <memory>\n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh>\n-15#include <dune/common/exceptions.hh>\n-16\n-17\n-18namespace _\bD_\bu_\bn_\be {\n-19 namespace TypeTree {\n+9#include <cstddef>\n+10#include <cassert>\n+11#include <iostream>\n+12#include <type_traits>\n+13\n+14#include <dune/common/documentation.hh>\n+15#include <dune/common/version.hh>\n+16#include <dune/common/typetraits.hh>\n+17#include <dune/common/indices.hh>\n+18#include <dune/common/hybridutilities.hh>\n+19#include <dune/common/typelist.hh>\n 20\n-26 template<typename SourceNode, typename Transformation, typename\n-TransformedNode>\n-_\b2_\b7 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-28 {\n-29\n-_\b3_\b0 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = false;\n-31\n-_\b3_\b2 typedef TransformedNode _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be;\n-_\b3_\b3 typedef std::shared_ptr<transformed_type> _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-34\n-_\b3_\b5 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const Transformation&\n-t)\n-36 {\n-37 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be(s,t);\n-38 }\n-39\n-_\b4_\b0 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceNode> s, const\n-Transformation& t)\n-41 {\n-42 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be(s,t);\n-43 }\n+21#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh>\n+22#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+23\n+24namespace _\bD_\bu_\bn_\be {\n+25 namespace TypeTree {\n+26\n+27 // The Impl namespace collects some free standing functions helper functions\n+28 namespace Impl {\n+29 template<typename T>\n+30 struct check_size_t_impl\n+31 {\n+32 static constexpr auto check() {\n+33 return std::is_same_v<T, std::size_t>;\n+34 }\n+35 };\n+36\n+37 template<class T, T v>\n+38 struct check_size_t_impl<std::integral_constant<T,v>>\n+39 {\n+40 static constexpr auto check() {\n+41 return std::is_same_v<T, std::size_t>;\n+42 }\n+43 };\n 44\n-_\b4_\b5 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n-SourceNode> s, const Transformation& t)\n-46 {\n-47 return std::make_shared<transformed_type>(s,t);\n+45 template<typename T>\n+46 constexpr auto check_size_t() {\n+47 return check_size_t_impl<T>::check();\n 48 }\n 49\n-50 };\n-51\n-52\n-53 template<typename SourceNode, typename Transformation, template<typename\n-Child> class TransformedNodeTemplate>\n-_\b5_\b4 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-55 {\n-56\n-_\b5_\b7 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n-58\n-59 template<typename TC>\n-_\b6_\b0 struct _\br_\be_\bs_\bu_\bl_\bt\n-61 {\n-_\b6_\b2 typedef typename TransformedNodeTemplate<TC>::type _\bt_\by_\bp_\be;\n-_\b6_\b3 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-_\b6_\b4 static const std::size_t _\bd_\be_\bg_\br_\be_\be = _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be_\b<_\bt_\by_\bp_\be_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-65 };\n-66\n-67 template<typename TC>\n-_\b6_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>&\n-children)\n-69 {\n-70 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n-71 }\n-72\n-73 template<typename TC>\n-_\b7_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceNode>\n-s, const Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:\n-_\bd_\be_\bg_\br_\be_\be>& children)\n-75 {\n-76 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n-77 }\n-78\n-79 template<typename TC>\n-_\b8_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, const std::array<std::\n-shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>& children)\n-81 {\n-82 return std::make_shared<typename result<TC>::type>(s,t,children);\n-83 }\n-84\n-85 };\n-86\n-87\n-88 template<typename SourceNode, typename Transformation,\n-template<typename,typename,std::size_t> class TransformedNode>\n-_\b8_\b9 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-90 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n-91 Transformation,\n-92 GenericPowerNodeTransformationTemplate<SourceNode,\n-93 Transformation,\n-94 TransformedNode>::template result\n-95 >\n-96 {};\n+50 template<typename T>\n+51 constexpr auto cast_size_t(const T & v) {\n+52 // check that T is an integral type that can be cast to std::size_t\n+53 static_assert(\n+54 std::is_convertible_v<T,std::size_t> &&\n+55 std::is_integral_v<T>,\n+56 \"HybridTreePath indices must be convertible to std::size_t or std::\n+integral_constant<std::size_t,v>\");\n+57 // positivity can only be checked at run-time\n+58 assert(v >= 0 &&\n+59 \"HybridTreePath indices must be convertible to std::size_t or std::\n+integral_constant<std::size_t,v>\");\n+60 return std::size_t(v);\n+61 }\n+62\n+63 template<class T, T v>\n+64 constexpr auto cast_size_t(std::integral_constant<T,v>) {\n+65 // check that T is an intergal type that can be cast to std::size_t\n+66 // and that v is positive\n+67 static_assert(\n+68 std::is_convertible_v<T,std::size_t> &&\n+69 std::is_integral_v<T> &&\n+70 v >= 0,\n+71 \"HybridTreePath indices must be convertible to std::size_t or std::\n+integral_constant<std::size_t,v>\");\n+72 return std::integral_constant<std::size_t,v>();\n+73 }\n+74\n+75 // these are helper functions that help triggering a deprecation warning\n+76 template<typename T>\n+77 [[deprecated(\"HybridTreePath index storage should be std::size_t or std::\n+integral_constant<std::size_t,v>!\\n\"\n+78 \"Using anything else is deprecated and will not possible after the 2.10\n+release.\\n\"\n+79 \"It is adviced not to specify the template parameters expicitly,\\n\"\n+80 \"but to use the helper functions `hybridTreePath` or `treePath`.\"\n+81 \"These take care of converting indices to the appropriate storage.\")]]\n+82 constexpr bool check_storage_type(MetaType<T>) {\n+83 return false;\n+84 }\n+85\n+86 // specialization of valid index type\n+87 template<std::size_t v>\n+88 constexpr bool check_storage_type(MetaType<std::integral_constant<std::\n+size_t,v>>) {\n+89 return true;\n+90 }\n+91\n+92 // specialization of valid index type\n+93 constexpr bool check_storage_type(MetaType<std::size_t>) {\n+94 return true;\n+95 }\n+96 }\n 97\n-98\n-99 template<typename SourceNode, typename Transformation, template<typename\n-Child> class TransformedNodeTemplate>\n-_\b1_\b0_\b0 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-101 {\n-102\n-_\b1_\b0_\b3 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+98 template<typename... T>\n+99 class HybridTreePath;\n+100\n 104\n-105 template<typename TC>\n-_\b1_\b0_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n-107 {\n-_\b1_\b0_\b8 typedef typename TransformedNodeTemplate<TC>::type _\bt_\by_\bp_\be;\n-_\b1_\b0_\b9 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-110 };\n+_\b1_\b0_\b5 namespace TreePathType {\n+_\b1_\b0_\b6 enum _\bT_\by_\bp_\be { _\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc, _\bd_\by_\bn_\ba_\bm_\bi_\bc };\n+107 }\n+108\n+109 template<typename>\n+_\b1_\b1_\b0 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be;\n 111\n-112 template<typename TC>\n-_\b1_\b1_\b3 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, const std::vector<std::shared_ptr<TC>>& children)\n-114 {\n-115 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n-116 }\n+112 template<typename,std::size_t>\n+_\b1_\b1_\b3 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk;\n+114\n+115 template<typename,std::size_t>\n+_\b1_\b1_\b6 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt;\n 117\n-118 template<typename TC>\n-_\b1_\b1_\b9 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const\n-SourceNode> s, const Transformation& t, const std::vector<std::shared_ptr<TC>>&\n-children)\n-120 {\n-121 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n-122 }\n+118 template<typename>\n+_\b1_\b1_\b9 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk;\n+120\n+121 template<typename>\n+_\b1_\b2_\b2 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt;\n 123\n-124 template<typename TC>\n-_\b1_\b2_\b5 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, const std::\n-vector<std::shared_ptr<TC>>& children)\n-126 {\n-127 return std::make_shared<typename result<TC>::type>(s,t,children);\n-128 }\n+124 template<typename, std::size_t...>\n+_\b1_\b2_\b5 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk;\n+126\n+127 template<typename>\n+_\b1_\b2_\b8 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt;\n 129\n-130 };\n-131\n+130 template<typename, typename>\n+_\b1_\b3_\b1 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt;\n 132\n-133 template<typename SourceNode, typename Transformation,\n-template<typename,typename> class TransformedNode>\n-_\b1_\b3_\b4 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-135 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n-136 Transformation,\n-137 GenericDynamicPowerNodeTransformationTemplate<SourceNode,\n-138 Transformation,\n-139 TransformedNode>::template result\n-140 >\n-141 {};\n-142\n+133 template<std::size_t... i>\n+_\b1_\b3_\b4 void _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh(std::ostream& os)\n+135 {}\n+136\n+137 template<std::size_t k, std::size_t... i>\n+_\b1_\b3_\b8 void _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh(std::ostream& os)\n+139 {\n+140 os << k << \" \";\n+141 _\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh<i...>(os);\n+142 }\n 143\n-144 template<typename SourceNode, typename Transformation,\n-template<typename...> class TransformedNodeTemplate>\n-_\b1_\b4_\b5 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-146 {\n-147\n-_\b1_\b4_\b8 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n-149\n-150 template<typename... TC>\n-_\b1_\b5_\b1 struct _\br_\be_\bs_\bu_\bl_\bt\n-152 {\n-_\b1_\b5_\b3 typedef typename TransformedNodeTemplate<TC...>_\b:_\b:_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n-_\b1_\b5_\b4 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n-155 };\n-156\n-157 template<typename... TC>\n-_\b1_\b5_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n-Transformation& t, std::shared_ptr<TC>... children)\n-159 {\n-160 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children...);\n-161 }\n-162\n-163 template<typename... TC>\n-_\b1_\b6_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const\n-SourceNode> s, const Transformation& t, std::shared_ptr<TC>... children)\n-165 {\n-166 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children...);\n-167 }\n+145\n+156 template<typename... T>\n+_\b1_\b5_\b7 class _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+158 {\n+159\n+160 // enable check for dune-typetree 2.10 and above\n+161#if DUNE_VERSION_GTE(TYPETREE,2,10)\n+162 // make sure that all indices use std::size_t as the underlying number type\n+163 static_assert((... && Impl::check_size_t<T>()),\n+164 \"HybridTreePath index storage must be std::size_t or std::\n+integral_constant<std::size_t,v>\");\n+165#endif\n+166\n+167 public:\n 168\n-169 template<typename... TC>\n-_\b1_\b7_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n-shared_ptr<const SourceNode> s, const Transformation& t, std::shared_ptr<TC>...\n-children)\n-171 {\n-172 return std::make_shared<typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type>(s,t,children...);\n-173 }\n-174\n-175 };\n-176\n-177\n-178 template<typename SourceNode, typename Transformation,\n-template<typename,typename...> class TransformedNode>\n-_\b1_\b7_\b9 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-180 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n-181 Transformation,\n-182 GenericCompositeNodeTransformationTemplate<SourceNode,\n-183 Transformation,\n-184 TransformedNode>::template result\n-185 >\n-186 {};\n-187\n-189\n-190 } // namespace TypeTree\n-191} //namespace Dune\n+_\b1_\b7_\b0 using _\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be = std::index_sequence_for<T...>;\n+171\n+_\b1_\b7_\b3 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh()\n+174 {\n+175 [[maybe_unused]] constexpr bool check =\n+176 (... && Impl::check_storage_type(MetaType<T>()) );\n+177 }\n+178\n+_\b1_\b7_\b9 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& tp) = default;\n+_\b1_\b8_\b0 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh&& tp) = default;\n+181\n+_\b1_\b8_\b2 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& tp) = default;\n+_\b1_\b8_\b3 constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh&& tp) = default;\n+184\n+_\b1_\b8_\b6 explicit constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(std::tuple<T...> t)\n+187 : _data(t)\n+188 {\n+189 [[maybe_unused]] constexpr bool check =\n+190 (... && Impl::check_storage_type(MetaType<T>()) );\n+191 }\n 192\n-193#endif // DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n-_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n-decltype(Node::degree()) StaticDegree\n-Returns the statically known degree of the given Node type as a std::\n-integral_constant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n+194 template<typename... U,\n+195 typename std::enable_if_t<(sizeof...(T) > 0 && sizeof...(U) == sizeof...\n+(T)),bool> = true>\n+_\b1_\b9_\b6 explicit constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(U... t)\n+197 : _data(t...) // we assume that all arguments are convertible to the types\n+T...\n+198 {\n+199 [[maybe_unused]] constexpr bool check =\n+200 (... && Impl::check_storage_type(MetaType<T>()) );\n+201 }\n+202\n+_\b2_\b0_\b4 [[nodiscard]] constexpr static _\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be _\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be()\n+205 {\n+206 return {};\n+207 }\n+208\n+_\b2_\b1_\b0 [[nodiscard]] constexpr static std::size_t _\bs_\bi_\bz_\be()\n+211 {\n+212 return sizeof...(T);\n+213 }\n+214\n+_\b2_\b1_\b6 [[nodiscard]] constexpr static std::size_t _\bm_\ba_\bx_\b__\bs_\bi_\bz_\be()\n+217 {\n+218 return _\bs_\bi_\bz_\be();\n+219 }\n+220\n+222 template<std::size_t i,\n+223 std::enable_if_t<(sizeof...(T) > i),bool> = true>\n+_\b2_\b2_\b4 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](Dune::index_constant<i>) const\n+225 {\n+226 return std::get<i>(_data);\n+227 }\n+228\n+_\b2_\b3_\b0 [[nodiscard]] constexpr std::size_t _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t pos) const\n+231 {\n+232 std::size_t entry = 0;\n+233 Dune::Hybrid::forEach(_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be(), [&] (auto i) {\n+234 if (i==pos)\n+235 entry = this->_\be_\bl_\be_\bm_\be_\bn_\bt(i);\n+236 });\n+237 return entry;\n+238 }\n+239\n+241 template<std::size_t i,\n+242 std::enable_if_t<(sizeof...(T) > i),bool> = true>\n+_\b2_\b4_\b3 [[nodiscard]] constexpr auto _\be_\bl_\be_\bm_\be_\bn_\bt(Dune::index_constant<i> pos = {})\n+const\n+244 {\n+245 return std::get<i>(_data);\n+246 }\n+247\n+_\b2_\b4_\b9 [[nodiscard]] constexpr std::size_t _\be_\bl_\be_\bm_\be_\bn_\bt(std::size_t pos) const\n+250 {\n+251 std::size_t entry = 0;\n+252 Dune::Hybrid::forEach(_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be(), [&] (auto i) {\n+253 if (i==pos)\n+254 entry = this->_\be_\bl_\be_\bm_\be_\bn_\bt(i);\n+255 });\n+256 return entry;\n+257 }\n+258\n+260 template<std::size_t n = sizeof...(T),\n+261 std::enable_if_t<(n > 0 && n == sizeof...(T)),bool> = true>\n+_\b2_\b6_\b2 [[nodiscard]] constexpr auto _\bf_\br_\bo_\bn_\bt() const\n+263 {\n+264 return std::get<0>(_data);\n+265 }\n+266\n+268 template<std::size_t n = sizeof...(T),\n+269 std::enable_if_t<(n > 0 && n == sizeof...(T)),bool> = true>\n+_\b2_\b7_\b0 [[nodiscard]] constexpr auto _\bb_\ba_\bc_\bk() const\n+271 {\n+272 return std::get<n-1>(_data);\n+273 }\n+274\n+275#ifndef DOXYGEN\n+276\n+277 // I can't be bothered to make all the external accessors friends of\n+HybridTreePath,\n+278 // so we'll only hide the data tuple from the user in Doxygen.\n+279\n+280 using Data = std::tuple<T...>;\n+281 Data _data;\n+282\n+283#endif // DOXYGEN\n+284\n+285 };\n+286\n+288\n+294 template<typename... T>\n+_\b2_\b9_\b5 [[nodiscard]] constexpr auto _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T... t)\n+296 {\n+297 // check that all entries are based on std::size_t\n+298 static_assert((... && Impl::check_size_t<T>()),\n+299 \"HybridTreePath indices must be of type std::size_t or std::\n+integral_constant<std::size_t,v>\");\n+300 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...>(t...);\n+301 }\n+302\n+304\n+311 template<typename... T>\n+_\b3_\b1_\b2 [[nodiscard]] constexpr auto _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(const T&... t)\n+313 {\n+314 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(Impl::cast_size_t(t)...);\n+315 }\n+316\n+318\n+325 template<typename... T>\n+_\b3_\b2_\b6 [[nodiscard]] constexpr auto _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(const T&... t)\n+327 {\n+328 return _\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(Impl::cast_size_t(t)...);\n+329 }\n+330\n+331\n+333 template<typename... T>\n+_\b3_\b3_\b4 [[nodiscard]] constexpr std::size_t _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&)\n+335 {\n+336 return sizeof...(T);\n+337 }\n+338\n+340\n+356 template<std::size_t i, typename... T>\n+_\b3_\b5_\b7 [[nodiscard]] constexpr auto _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp,\n+index_constant<i> = {})\n+358 -> typename std::decay<decltype(std::get<i>(tp._data))>::type\n+359 {\n+360 return std::get<i>(tp._data);\n+361 }\n+362\n+364\n+379 template<std::size_t i,typename... T>\n+_\b3_\b8_\b0 [[nodiscard]] constexpr std::size_t _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx(const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> = {})\n+381 {\n+382 return std::get<i>(tp._data);\n+383 }\n+384\n+386\n+391 template<typename... T>\n+_\b3_\b9_\b2 [[nodiscard]] constexpr auto _\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n+393 -> decltype(tp._\bb_\ba_\bc_\bk())\n+394 {\n+395 return tp._\bb_\ba_\bc_\bk();\n+396 }\n+397\n+399\n+404 template<typename... T>\n+_\b4_\b0_\b5 [[nodiscard]] constexpr auto _\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n+406 -> decltype(tp._\bf_\br_\bo_\bn_\bt())\n+407 {\n+408 return tp._\bf_\br_\bo_\bn_\bt();\n+409 }\n+410\n+412\n+415 template<typename... T>\n+_\b4_\b1_\b6 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,std::size_t> _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, std::size_t i)\n+417 {\n+418 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,std::size_t>(std::tuple_cat(tp._data,std::\n+make_tuple(i)));\n+419 }\n+420\n+422\n+436 template<std::size_t i, typename... T>\n+_\b4_\b3_\b7 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<T...,index_constant<i>> _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> i_ = {})\n+438 {\n+439 return HybridTreePath<T...,index_constant<i> >(std::tuple_cat\n+(tp._data,std::make_tuple(i_)));\n+440 }\n+441\n+443\n+446 template<typename... T>\n+_\b4_\b4_\b7 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::size_t,T...> _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt(const\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, std::size_t element)\n+448 {\n+449 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::size_t,T...>(std::tuple_cat(std::make_tuple\n+(element),tp._data));\n+450 }\n+451\n+453\n+467 template<std::size_t i, typename... T>\n+_\b4_\b6_\b8 [[nodiscard]] constexpr _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>,T...> _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt\n+(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp, index_constant<i> _i = {})\n+469 {\n+470 return HybridTreePath<index_constant<i>,T...>(std::tuple_cat(std::\n+make_tuple(_i),tp._data));\n+471 }\n+472\n+474\n+485 template<typename I, typename... T, std::enable_if_t<(sizeof...(T) >\n+0),bool> = true>\n+_\b4_\b8_\b6 [[nodiscard]] constexpr auto _\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&\n+tp, I i) {\n+487 using ::Dune::Hybrid::plus;\n+488 return _\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk(tp), _\bp_\bl_\bu_\bs(_\bb_\ba_\bc_\bk(tp), i));\n+489 }\n+490\n+491\n+493\n+504 template<typename I, typename... T, std::enable_if_t<(sizeof...(T) >\n+0),bool> = true>\n+_\b5_\b0_\b5 [[nodiscard]] constexpr auto _\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>&\n+tp, I i) {\n+506 using ::Dune::Hybrid::plus;\n+507 return _\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt(_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt(tp), _\bp_\bl_\bu_\bs(_\bf_\br_\bo_\bn_\bt(tp), i));\n+508 }\n+509\n+511 template<class... Head, class... Other>\n+_\b5_\b1_\b2 [[nodiscard]] constexpr auto _\bj_\bo_\bi_\bn(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bH_\be_\ba_\bd_\b._\b._\b._\b>& head,\n+const Other&... tail) {\n+513 return _\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::tuple_cat(head._data, tail._data...)};\n+514 }\n+515\n+517 template<class... T>\n+_\b5_\b1_\b8 [[nodiscard]] constexpr auto _\br_\be_\bv_\be_\br_\bs_\be(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp) {\n+519 constexpr std::size_t size = sizeof...(T);\n+520 return unpackIntegerSequence([&](auto... i){\n+521 return _\bt_\br_\be_\be_\bP_\ba_\bt_\bh(tp[index_constant<size-i-1>{}] ...);\n+522 }, std::make_index_sequence<size>{});\n+523 }\n+524\n+526\n+529 template <class... T, std::enable_if_t<(sizeof...(T) > 0),bool> = true>\n+_\b5_\b3_\b0 [[nodiscard]] constexpr auto _\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n+531 {\n+532 return unpackIntegerSequence([&](auto... i){\n+533 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::make_tuple(std::get<i+1>(tp._data)...)};\n+534 }, std::make_index_sequence<(sizeof...(T) - 1)>{});\n+535 }\n+536\n+538\n+541 template <class... T, std::enable_if_t<(sizeof...(T) > 0),bool> = true>\n+_\b5_\b4_\b2 [[nodiscard]] constexpr auto _\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk(const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n+543 {\n+544 return unpackIntegerSequence([&](auto... i){\n+545 return _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh{std::make_tuple(std::get<i>(tp._data)...)};\n+546 }, std::make_index_sequence<(sizeof...(T) - 1)>{});\n+547 }\n+548\n+550\n+558 template <class... S, class... T>\n+_\b5_\b5_\b9 [[nodiscard]] constexpr bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(\n+560 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bS_\b._\b._\b._\b>& lhs,\n+561 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& rhs)\n+562 {\n+563 if constexpr (sizeof...(S) == sizeof...(T)) {\n+564 if constexpr ((Dune::IsInteroperable<S,T>::value &&...)) {\n+565 return unpackIntegerSequence([&](auto... i){\n+566 return ((std::get<i>(lhs._data) == std::get<i>(rhs._data)) &&...);\n+567 }, std::make_index_sequence<(sizeof...(S))>{});\n+568 } else {\n+569 return false;\n+570 }\n+571 } else {\n+572 return false;\n+573 }\n+574 }\n+575\n+577\n+582 template <class S, S... lhs, class T, T... rhs>\n+_\b5_\b8_\b3 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(\n+584 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<S,lhs>...>&,\n+585 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<T,rhs>...>&)\n+586 {\n+587 return std::bool_constant<_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(lhs...) == _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(rhs...)>\n+{};\n+588 }\n+589\n+590\n+592 template <class... S, class... T>\n+_\b5_\b9_\b3 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(\n+594 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bS_\b._\b._\b._\b>& lhs,\n+595 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& rhs)\n+596 {\n+597 return !(lhs == rhs);\n+598 }\n+599\n+601 template <class S, S... lhs, class T, T... rhs>\n+_\b6_\b0_\b2 [[nodiscard]] constexpr auto _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(\n+603 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<S,lhs>...>&,\n+604 const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<std::integral_constant<T,rhs>...>&)\n+605 {\n+606 return std::bool_constant<_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(lhs...) != _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(rhs...)>\n+{};\n+607 }\n+608\n+609\n+_\b6_\b1_\b0 inline namespace Literals {\n+611\n+613\n+617 template <char... digits>\n+_\b6_\b1_\b8 constexpr auto operator\"\" _tp()\n+619 {\n+620 using namespace Dune::Indices::Literals;\n+621 return _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(operator\"\"_ic<digits...>());\n+622 }\n+623\n+624 } // end namespace Literals\n+625\n+626\n+627 template<std::size_t... i>\n+_\b6_\b2_\b8 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...> >\n+629 : public index_constant<sizeof...(i)>\n+630 {};\n+631\n+632\n+633 template<std::size_t k, std::size_t... i>\n+_\b6_\b3_\b4 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,k>\n+635 {\n+_\b6_\b3_\b6 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...,index_constant<k>> _\bt_\by_\bp_\be;\n+637 };\n+638\n+639 template<std::size_t k, std::size_t... i>\n+_\b6_\b4_\b0 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,k>\n+641 {\n+_\b6_\b4_\b2 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bk_\b>,index_constant<i>...> _\bt_\by_\bp_\be;\n+643 };\n+644\n+645 template<std::size_t k>\n+_\b6_\b4_\b6 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>>>\n+647 : public index_constant<k>\n+648 {};\n+649\n+650 template<std::size_t j, std::size_t k, std::size_t... l>\n+_\b6_\b5_\b1 struct\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<j>,index_constant<k>,index_constant<l>...>>\n+652 : public\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk<HybridTreePath<index_constant<k>,index_constant<l>...>>\n+653 {};\n+654\n+655 template<std::size_t k, std::size_t... i>\n+_\b6_\b5_\b6 struct\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>,index_constant<i>...>>\n+657 : public index_constant<k>\n+658 {};\n+659\n+660 template<std::size_t k, std::size_t... i>\n+_\b6_\b6_\b1 struct _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>>,i...>\n+662 {\n+_\b6_\b6_\b3 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...> _\bt_\by_\bp_\be;\n+664 };\n+665\n+666 template<std::size_t j,\n+667 std::size_t k,\n+668 std::size_t... l,\n+669 std::size_t... i>\n+_\b6_\b7_\b0 struct\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<j>,index_constant<k>,index_constant<l>...>,i...>\n+671 : public\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk<HybridTreePath<index_constant<k>,index_constant<l>...>,i...,j>\n+672 {};\n+673\n+674 template<std::size_t k, std::size_t... i>\n+_\b6_\b7_\b5 struct\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>,index_constant<i>...> >\n+676 {\n+_\b6_\b7_\b7 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...> _\bt_\by_\bp_\be;\n+678 };\n+679\n+680 template<std::size_t... i, std::size_t... k>\n+_\b6_\b8_\b1 struct\n+_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt<_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<i>...>,_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh<index_constant<k>...>\n+>\n+682 {\n+_\b6_\b8_\b3 typedef _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...,index_constant<k>...> _\bt_\by_\bp_\be;\n+684 };\n+685\n+686#ifndef DOXYGEN\n+687\n+688 namespace impl {\n+689\n+690 // end of recursion\n+691 template<std::size_t i, typename... T>\n+692 typename std::enable_if<\n+693 (i == sizeof...(T))\n+694 >::type\n+695 print_hybrid_tree_path(std::ostream& os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp,\n+index_constant<i> _i)\n+696 {}\n+697\n+698 // print current entry and recurse\n+699 template<std::size_t i, typename... T>\n+700 typename std::enable_if<\n+701 (i < sizeof...(T))\n+702 >::type\n+703 print_hybrid_tree_path(std::ostream& os, const HybridTreePath<T...>& tp,\n+index_constant<i> _i)\n+704 {\n+705 os << _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx(tp,_i) << \" \";\n+706 print_hybrid_tree_path(os,tp,index_constant<i+1>{});\n+707 }\n+708\n+709 } // namespace impl\n+710\n+711#endif // DOXYGEN\n+712\n+714 template<typename... T>\n+_\b7_\b1_\b5 std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& os, const _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bT_\b._\b._\b._\b>& tp)\n+716 {\n+717 os << \"HybridTreePath< \";\n+718 impl::print_hybrid_tree_path(os, tp, index_constant<0>{});\n+719 os << \">\";\n+720 return os;\n+721 }\n+722\n+723 template<std::size_t... i>\n+_\b7_\b2_\b4 using _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\be_\be_\bP_\ba_\bt_\bh = _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\bD_\bu_\bn_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\bi_\b>...>;\n+725\n+727\n+728 } // namespace TypeTree\n+729} //namespace Dune\n+730\n+731#endif // DUNE_TYPETREE_TREEPATH_HH\n+_\bf_\bi_\bx_\be_\bd_\bc_\ba_\bp_\ba_\bc_\bi_\bt_\by_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh\n+_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n+constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n+T... > &tp, std::size_t i)\n+Appends a run time index to a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+std::ostream & operator<<(std::ostream &os, const HybridTreePath< T... > &tp)\n+Dumps a HybridTreePath to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:715\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n+constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n+Returns the size (number of components) of the given HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bb_\ba_\bc_\bk\n+constexpr auto back(const HybridTreePath< T... > &tp) -> decltype(tp.back())\n+Returns a copy of the last element of the HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:392\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bf_\br_\bo_\bn_\bt\n+constexpr HybridTreePath< std::size_t, T... > push_front(const HybridTreePath<\n+T... > &tp, std::size_t element)\n+Prepends a run time index to a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:447\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bf_\br_\bo_\bn_\bt\n+constexpr auto accumulate_front(const HybridTreePath< T... > &tp, I i)\n+Hybrid utility that accumulates to the front of a multi-index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:505\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bf_\br_\bo_\bn_\bt\n+constexpr auto pop_front(const HybridTreePath< T... > &tp)\n+Removes first index on a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:530\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bv_\be_\br_\bs_\be\n+constexpr auto reverse(const HybridTreePath< T... > &tp)\n+Reverses the order of the elements in the path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:518\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bc_\bc_\bu_\bm_\bu_\bl_\ba_\bt_\be_\b__\bb_\ba_\bc_\bk\n+constexpr auto accumulate_back(const HybridTreePath< T... > &tp, I i)\n+Hybrid utility that accumulates to the back of a multi-index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:486\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bj_\bo_\bi_\bn\n+constexpr auto join(const HybridTreePath< Head... > &head, const Other &...\n+tail)\n+Join two tree paths into one.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:512\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bE_\bn_\bt_\br_\by\n+constexpr auto treePathEntry(const HybridTreePath< T... > &tp, index_constant<\n+i >={}) -> typename std::decay< decltype(std::get< i >(tp._data))>::type\n+Returns a copy of the i-th element of the HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:357\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bo_\bp_\b__\bb_\ba_\bc_\bk\n+constexpr auto pop_back(const HybridTreePath< T... > &tp)\n+Removes last index on a HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:542\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+constexpr auto operator!=(const HybridTreePath< S... > &lhs, const\n+HybridTreePath< T... > &rhs)\n+Compare two HybridTreePaths for unequality.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:593\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto hybridTreePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bI_\bn_\bd_\be_\bx\n+constexpr std::size_t treePathIndex(const HybridTreePath< T... > &tp,\n+index_constant< i >={})\n+Returns the index value of the i-th element of the HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bm_\ba_\bk_\be_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto makeTreePath(const T... t)\n+helper function to construct a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+constexpr bool operator==(const HybridTreePath< S... > &lhs, const\n+HybridTreePath< T... > &rhs)\n+Compare two HybridTreePaths for value equality.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:559\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\b__\bt_\br_\be_\be_\b__\bp_\ba_\bt_\bh\n+void print_tree_path(std::ostream &os)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr auto treePath(const T &... t)\n+Constructs a new HybridTreePath from the given indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\br_\bo_\bn_\bt\n+constexpr auto front(const HybridTreePath< T... > &tp) -> decltype(tp.front())\n+Returns a copy of the first element of the HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:405\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be\n-TransformedNode transformed_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< transformed_type > transformed_storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(std::shared_ptr< const SourceNode > s, const\n-Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static transformed_storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static transformed_type transform(const SourceNode &s, const Transformation &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC\n->, result< TC >::degree > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(std::shared_ptr< const SourceNode > s,\n-const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC\n->::degree > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(const SourceNode &s, const Transformation\n-&t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNodeTemplate< TC >::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static const std::size_t degree\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(std::shared_ptr< const SourceNode > s,\n-const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC >::type transform(const SourceNode &s, const Transformation\n-&t, const std::vector< std::shared_ptr< TC > > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC\n-> > &children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNodeTemplate< TC >::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:\n-_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC... >::type transform(const SourceNode &s, const\n-Transformation &t, std::shared_ptr< TC >... children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n-static result< TC... >::storage_type transform_storage(std::shared_ptr< const\n-SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n-static result< TC... >::type transform(std::shared_ptr< const SourceNode > s,\n-const Transformation &t, std::shared_ptr< TC >... children)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n-static const bool recursive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n-TransformedNodeTemplate< TC... >::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:\n-_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n-std::shared_ptr< type > storage_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc\n+@ fullyStatic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n+@ dynamic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bl_\bu_\bs\n+Statically combine two values of type result_type using +.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+A hybrid version of TreePath that supports both compile time and run time\n+indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr HybridTreePath(HybridTreePath &&tp)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bb_\ba_\bc_\bk\n+constexpr auto back() const\n+Get the last index value. Only available in non-empty paths.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+constexpr HybridTreePath & operator=(const HybridTreePath &tp)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+constexpr std::size_t element(std::size_t pos) const\n+Get the index value at position pos.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr HybridTreePath(std::tuple< T... > t)\n+Constructor from a std::tuple\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+constexpr HybridTreePath & operator=(HybridTreePath &&tp)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr HybridTreePath(U... t)\n+Constructor from arguments.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr HybridTreePath()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:173\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+constexpr auto element(Dune::index_constant< i > pos={}) const\n+Get the last index value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+Get the size (length) of this path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+constexpr auto operator[](Dune::index_constant< i >) const\n+Get the index value at position pos.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bf_\br_\bo_\bn_\bt\n+constexpr auto front() const\n+Get the first index value. Only available in non-empty paths.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:262\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\be_\bn_\bu_\bm_\be_\br_\ba_\bt_\be\n+static constexpr index_sequence enumerate()\n+Returns an index_sequence for enumerating the components of this\n+HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n+constexpr HybridTreePath(const HybridTreePath &tp)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+constexpr std::size_t operator[](std::size_t pos) const\n+Get the index value at position pos.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bm_\ba_\bx_\b__\bs_\bi_\bz_\be\n+static constexpr std::size_t max_size()\n+Get the size (length) of this path.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b:_\b:_\bi_\bn_\bd_\be_\bx_\b__\bs_\be_\bq_\bu_\be_\bn_\bc_\be\n+std::index_sequence_for< T... > index_sequence\n+An index_sequence for the entries in this HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bB_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bF_\br_\bo_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk\n+_\b>_\b:_\b:_\bt_\by_\bp_\be\n+HybridTreePath< index_constant< i >..., index_constant< k > > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:636\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bu_\bs_\bh_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,_\b _\bk\n+_\b>_\b:_\b:_\bt_\by_\bp_\be\n+HybridTreePath< index_constant< k >, index_constant< i >... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:642\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bB_\ba_\bc_\bk_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b _\b>_\b,_\b _\bi_\b._\b._\b.\n+_\b>_\b:_\b:_\bt_\by_\bp_\be\n+HybridTreePath< index_constant< i >... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:663\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bP_\bo_\bp_\bF_\br_\bo_\bn_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b,\n+_\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+HybridTreePath< index_constant< i >... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:677\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bC_\bo_\bn_\bc_\ba_\bt_\b<_\b _\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bi_\b _\b>_\b._\b._\b._\b _\b>_\b,\n+_\bH_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b<_\b _\bi_\bn_\bd_\be_\bx_\b__\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b<_\b _\bk_\b _\b>_\b._\b._\b._\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+HybridTreePath< index_constant< i >..., index_constant< k >... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:683\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00065.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00065.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: pairtraversal.hh File Reference</title>\n+<title>dune-typetree: simpletransformationdescriptors.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,46 +70,50 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">pairtraversal.hh File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> |\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">simpletransformationdescriptors.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <dune/common/std/type_traits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/traversal.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <array></code><br />\n+<code>#include <memory></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <dune/common/exceptions.hh></code><br />\n </div>\n <p><a href=\"a00065_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01336.html\">Dune::TypeTree::SimpleLeafNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01340.html\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01344.html\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01348.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01352.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01356.html\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01360.html\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a8b542590e97d908492307e64a9d8ec99\" id=\"r_a8b542590e97d908492307e64a9d8ec99\"><td class=\"memTemplParams\" colspan=\"2\">template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0> </td></tr>\n-<tr class=\"memitem:a8b542590e97d908492307e64a9d8ec99\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Dune::TypeTree::Detail::applyToTreePair</a> (T1 &&tree1, T2 &&tree2, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V &&visitor)</td></tr>\n-<tr class=\"separator:a8b542590e97d908492307e64a9d8ec99\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga677ef3ed3418747507fd30687854f5c4\" id=\"r_ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree1 , typename Tree2 , typename Visitor > </td></tr>\n-<tr class=\"memitem:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">Dune::TypeTree::applyToTreePair</a> (Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)</td></tr>\n-<tr class=\"memdesc:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply visitor to a pair of TypeTrees. <br /></td></tr>\n-<tr class=\"separator:ga677ef3ed3418747507fd30687854f5c4\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,43 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-pairtraversal.hh File Reference\n-#include <dune/common/std/type_traits.hh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+simpletransformationdescriptors.hh File Reference\n+#include <array>\n+#include <memory>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+#include <dune/common/exceptions.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<\n-(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0>\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br (T1 &&tree1, T2 &&tree2, TreePath\n- _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V &&visitor)\n-\u00a0\n-template<typename Tree1 , typename Tree2 , typename Visitor >\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br (Tree1 &&tree1, Tree2 &&tree2, Visitor\n- &&visitor)\n-\u00a0 Apply visitor to a pair of TypeTrees.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00065_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00065_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: pairtraversal.hh Source File</title>\n+<title>dune-typetree: simpletransformationdescriptors.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,152 +74,209 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">pairtraversal.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">simpletransformationdescriptors.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00065.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00029.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00011.html\">dune/typetree/visitor.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00080.html\">dune/typetree/traversal.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n <div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00025\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html\"> 25</a></span> <span class=\"keyword\">namespace </span>Detail {</div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"comment\">/* The signature is the same as for the public applyToTreePair</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span><span class=\"comment\"> * function in Dune::Typtree, despite the additionally passed</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"comment\"> * treePath argument. The path passed here is associated to</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"comment\"> * the tree and the relative paths of the children (wrt. to tree)</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"comment\"> * are appended to this. Hence the behavior of the public function</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"comment\"> * is resembled by passing an empty treePath.</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"comment\"> * This is the overload for leaf traversal</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T1, <span class=\"keyword\">class </span>T2, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> std::enable_if_t<(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf), <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\"> 40</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(T1&& tree1, T2&& tree2, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> visitor.leaf(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span><span class=\"comment\"> * This is the general overload doing static child traversal.</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T1, <span class=\"keyword\">class </span>T2, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> std::enable_if_t<not(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf), <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(T1&& tree1, T2&& tree2, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"comment\">// Do we really want to take care for const-ness of the Tree</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"comment\">// when instanciating VisitChild below? I'd rather expect this:</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"comment\">// using Tree1 = std::decay_t<T1>;</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> <span class=\"comment\">// using Tree2 = std::decay_t<T2>;</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"comment\">// using Visitor = std::decay_t<V>;</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">using </span>Tree1 = std::remove_reference_t<T1>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> <span class=\"keyword\">using </span>Tree2 = std::remove_reference_t<T2>;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> visitor.pre(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> <span class=\"comment\">// check which type of traversal is supported by the trees</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">using </span>allowDynamicTraversal = std::conjunction<</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> Dune::Std::is_detected<DynamicTraversalConcept,Tree1>,</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> Dune::Std::is_detected<DynamicTraversalConcept,Tree2>>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> <span class=\"keyword\">using </span>allowStaticTraversal = std::conjunction<</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> Dune::Std::is_detected<StaticTraversalConcept,Tree1>,</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> Dune::Std::is_detected<StaticTraversalConcept,Tree2>>;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"comment\">// both trees must support either dynamic or static traversal</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00026\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html\"> 26</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01336.html\">SimpleLeafNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> {</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\"> 29</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\">recursive</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\"> 31</a></span> <span class=\"keyword\">typedef</span> TransformedNode <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a>;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\"> 32</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<transformed_type> <a class=\"code hl_typedef\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">transformed_storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\"> 34</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a> <a class=\"code hl_function\" href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a>();</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\"> 39</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">transformed_storage_type</a> <a class=\"code hl_function\" href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"keywordflow\">return</span> std::make_shared<transformed_type>();</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> </div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child, std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01340.html\">SimplePowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\"> 51</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html\"> 54</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01344.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\"> 56</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC, StaticDegree<SourceNode>::value> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\"> 57</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\"> 58</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\">degree</a> = <a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree<type>::value</a>;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\"> 62</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01344.html\">result<TC>::degree</a>>& children)</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> {</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">result<TC>::type</a>(children);</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01340.html#a2a2164a962159c12235be4d29d762697\"> 68</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01340.html#a2a2164a962159c12235be4d29d762697\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01344.html\">result<TC>::degree</a>>& children)</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> {</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(children);</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"comment\">// create a dynamic or static index range</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">auto</span> indices = [&]{</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(preferDynamicTraversal::value && allowDynamicTraversal::value)</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keywordflow\">return</span> Dune::range(std::size_t(tree1.degree()));</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> Dune::range(tree1.degree());</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }();</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value || allowStaticTraversal::value) {</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> Dune::Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">auto</span>&& child1 = tree1.child(i);</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">auto</span>&& child2 = tree2.child(i);</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">using </span>Child1 = std::decay_t<<span class=\"keyword\">decltype</span>(child1)>;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">using </span>Child2 = std::decay_t<<span class=\"keyword\">decltype</span>(child2)>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> visitor.beforeChild(tree1, child1, tree2, child2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> <span class=\"comment\">// This requires that visitor.in(...) can always be instantiated,</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"comment\">// even if there's a single child only.</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keywordflow\">if</span> (i>0)</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> visitor.in(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree1,Child1,Tree2,Child2,TreePath>::value;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(visitChild) {</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">applyToTreePair</a>(child1, child2, childTreePath, visitor);</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html\"> 77</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01348.html\">SimpleDynamicPowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> {</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#a72208d963624267d83cafb2522d6a120\"> 80</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01348.html#a72208d963624267d83cafb2522d6a120\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html\"> 83</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01352.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> {</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\"> 85</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\"> 86</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\"> 90</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> {</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">result<TC>::type</a>(children);</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01348.html#afea54f6ad39e912794668f7422e27934\"> 96</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01348.html#afea54f6ad39e912794668f7422e27934\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> {</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(children);</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n <div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> visitor.afterChild(tree1, child1, tree2, child2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> });</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> }</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> visitor.post(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> }</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html\"> 105</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01356.html\">SimpleCompositeNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> {</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\"> 108</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n <div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> } <span class=\"comment\">// namespace Detail</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00111\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html\"> 111</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01360.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> {</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\"> 113</a></span> <span class=\"keyword\">typedef</span> TransformedNode<TC...> <a class=\"code hl_typedef\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\"> 114</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\"> 118</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">result<TC...>::type</a>(children...);</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\"> 124</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::storage_type <a class=\"code hl_function\" href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keywordflow\">return</span> std::make_shared<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01360.html\">result</a><TC...>::type>(children...);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree1, <span class=\"keyword\">typename</span> Tree2, <span class=\"keyword\">typename</span> Visitor></div>\n-<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\"> 128</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">applyToTreePair</a>(Tree1&& tree1, Tree2&& tree2, Visitor&& visitor)</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> {</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <a class=\"code hl_function\" href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Detail::applyToTreePair</a>(tree1, tree2, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor);</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> }</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> };</div>\n </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n <div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_PAIRTRAVERSAL_HH</span></div>\n-<div class=\"ttc\" id=\"aa00011_html\"><div class=\"ttname\"><a href=\"a00011.html\">visitor.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00029_html\"><div class=\"ttname\"><a href=\"a00029.html\">nodeinterface.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00080_html\"><div class=\"ttname\"><a href=\"a00080.html\">traversal.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00090_html_ga677ef3ed3418747507fd30687854f5c4\"><div class=\"ttname\"><a href=\"a00090.html#ga677ef3ed3418747507fd30687854f5c4\">Dune::TypeTree::applyToTreePair</a></div><div class=\"ttdeci\">void applyToTreePair(Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to a pair of TypeTrees.</div><div class=\"ttdef\"><b>Definition</b> pairtraversal.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a8b542590e97d908492307e64a9d8ec99\"><div class=\"ttname\"><a href=\"a00102.html#a8b542590e97d908492307e64a9d8ec99\">Dune::TypeTree::Detail::applyToTreePair</a></div><div class=\"ttdeci\">void applyToTreePair(T1 &&tree1, T2 &&tree2, TreePath treePath, V &&visitor)</div><div class=\"ttdef\"><b>Definition</b> pairtraversal.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01336_html\"><div class=\"ttname\"><a href=\"a01336.html\">Dune::TypeTree::SimpleLeafNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa01336_html_a04e6ff6c636a3b36f242ca34e682dd13\"><div class=\"ttname\"><a href=\"a01336.html#a04e6ff6c636a3b36f242ca34e682dd13\">Dune::TypeTree::SimpleLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceNode &s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:34</div></div>\n+<div class=\"ttc\" id=\"aa01336_html_a14d22b0d2536ece00f4fc7fc57fb05d9\"><div class=\"ttname\"><a href=\"a01336.html#a14d22b0d2536ece00f4fc7fc57fb05d9\">Dune::TypeTree::SimpleLeafNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:29</div></div>\n+<div class=\"ttc\" id=\"aa01336_html_a762f8cd1661843ca5b67d9d6c26ab790\"><div class=\"ttname\"><a href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">Dune::TypeTree::SimpleLeafNodeTransformation::transformed_storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< transformed_type > transformed_storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:32</div></div>\n+<div class=\"ttc\" id=\"aa01336_html_a9b8409f72b3759f5eb1fe50a105e3241\"><div class=\"ttname\"><a href=\"a01336.html#a9b8409f72b3759f5eb1fe50a105e3241\">Dune::TypeTree::SimpleLeafNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:39</div></div>\n+<div class=\"ttc\" id=\"aa01336_html_afa37c301eb96854dbe3b8ff418771200\"><div class=\"ttname\"><a href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">Dune::TypeTree::SimpleLeafNodeTransformation::transformed_type</a></div><div class=\"ttdeci\">TransformedNode transformed_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:31</div></div>\n+<div class=\"ttc\" id=\"aa01340_html\"><div class=\"ttname\"><a href=\"a01340.html\">Dune::TypeTree::SimplePowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa01340_html_a2a2164a962159c12235be4d29d762697\"><div class=\"ttname\"><a href=\"a01340.html#a2a2164a962159c12235be4d29d762697\">Dune::TypeTree::SimplePowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:68</div></div>\n+<div class=\"ttc\" id=\"aa01340_html_a5e74b42b008e5311f4060489ac228ed8\"><div class=\"ttname\"><a href=\"a01340.html#a5e74b42b008e5311f4060489ac228ed8\">Dune::TypeTree::SimplePowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:51</div></div>\n+<div class=\"ttc\" id=\"aa01340_html_ae10930cd8b9b2264ca18cf63d42e85de\"><div class=\"ttname\"><a href=\"a01340.html#ae10930cd8b9b2264ca18cf63d42e85de\">Dune::TypeTree::SimplePowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:62</div></div>\n+<div class=\"ttc\" id=\"aa01344_html\"><div class=\"ttname\"><a href=\"a01344.html\">Dune::TypeTree::SimplePowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:55</div></div>\n+<div class=\"ttc\" id=\"aa01344_html_a1de73f0bdcf33ec83d31c03075c0d499\"><div class=\"ttname\"><a href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">Dune::TypeTree::SimplePowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC, StaticDegree< SourceNode >::value > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:56</div></div>\n+<div class=\"ttc\" id=\"aa01344_html_a411f7b80f8465a7b7434858dd33d2fd7\"><div class=\"ttname\"><a href=\"a01344.html#a411f7b80f8465a7b7434858dd33d2fd7\">Dune::TypeTree::SimplePowerNodeTransformation::result::degree</a></div><div class=\"ttdeci\">static const std::size_t degree</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:58</div></div>\n+<div class=\"ttc\" id=\"aa01344_html_ab028ec256a6d198194c815b362ab2801\"><div class=\"ttname\"><a href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">Dune::TypeTree::SimplePowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01348_html\"><div class=\"ttname\"><a href=\"a01348.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:78</div></div>\n+<div class=\"ttc\" id=\"aa01348_html_a72208d963624267d83cafb2522d6a120\"><div class=\"ttname\"><a href=\"a01348.html#a72208d963624267d83cafb2522d6a120\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:80</div></div>\n+<div class=\"ttc\" id=\"aa01348_html_ae3bd647d2350d9529d8f9e1cd8b79920\"><div class=\"ttname\"><a href=\"a01348.html#ae3bd647d2350d9529d8f9e1cd8b79920\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:90</div></div>\n+<div class=\"ttc\" id=\"aa01348_html_afea54f6ad39e912794668f7422e27934\"><div class=\"ttname\"><a href=\"a01348.html#afea54f6ad39e912794668f7422e27934\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa01352_html\"><div class=\"ttname\"><a href=\"a01352.html\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:84</div></div>\n+<div class=\"ttc\" id=\"aa01352_html_aa95f83212975c2470f0361b94890c671\"><div class=\"ttname\"><a href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:85</div></div>\n+<div class=\"ttc\" id=\"aa01352_html_afd8a1d62b3d68c6118db28267aaed0c4\"><div class=\"ttname\"><a href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:86</div></div>\n+<div class=\"ttc\" id=\"aa01356_html\"><div class=\"ttname\"><a href=\"a01356.html\">Dune::TypeTree::SimpleCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa01356_html_a47c41ee210422fdb7b0b9c0e69c207aa\"><div class=\"ttname\"><a href=\"a01356.html#a47c41ee210422fdb7b0b9c0e69c207aa\">Dune::TypeTree::SimpleCompositeNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:108</div></div>\n+<div class=\"ttc\" id=\"aa01356_html_a78ea284f1b9bc47321dff5779ed6907d\"><div class=\"ttname\"><a href=\"a01356.html#a78ea284f1b9bc47321dff5779ed6907d\">Dune::TypeTree::SimpleCompositeNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:124</div></div>\n+<div class=\"ttc\" id=\"aa01356_html_af79253ffe5856d005187e7065649c1f0\"><div class=\"ttname\"><a href=\"a01356.html#af79253ffe5856d005187e7065649c1f0\">Dune::TypeTree::SimpleCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:118</div></div>\n+<div class=\"ttc\" id=\"aa01360_html\"><div class=\"ttname\"><a href=\"a01360.html\">Dune::TypeTree::SimpleCompositeNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:112</div></div>\n+<div class=\"ttc\" id=\"aa01360_html_a10f5ad6862df441221281b52160ed3b0\"><div class=\"ttname\"><a href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\">Dune::TypeTree::SimpleCompositeNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:114</div></div>\n+<div class=\"ttc\" id=\"aa01360_html_a2e90f99cd656f209ce6044215c74bddd\"><div class=\"ttname\"><a href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">Dune::TypeTree::SimpleCompositeNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNode< TC... > type</div><div class=\"ttdef\"><b>Definition</b> simpletransformationdescriptors.hh:113</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,161 +1,253 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-pairtraversal.hh\n+simpletransformationdescriptors.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_PAIRTRAVERSAL_HH\n-7#define DUNE_TYPETREE_PAIRTRAVERSAL_HH\n+6#ifndef DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n+7#define DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n 8\n-9#include <dune/common/std/type_traits.hh>\n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+9#include <array>\n+10#include <memory>\n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+14#include <dune/common/exceptions.hh>\n+15\n 16\n 17namespace _\bD_\bu_\bn_\be {\n 18 namespace TypeTree {\n 19\n-_\b2_\b5 namespace Detail {\n-26\n-27 /* The signature is the same as for the public applyToTreePair\n-28 * function in Dune::Typtree, despite the additionally passed\n-29 * treePath argument. The path passed here is associated to\n-30 * the tree and the relative paths of the children (wrt. to tree)\n-31 * are appended to this. Hence the behavior of the public function\n-32 * is resembled by passing an empty treePath.\n-33 */\n-34\n-35 /*\n-36 * This is the overload for leaf traversal\n-37 */\n-38 template<class T1, class T2, class TreePath, class V,\n-39 std::enable_if_t<(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf),\n-int> = 0>\n-_\b4_\b0 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(T1&& tree1, T2&& tree2, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n-41 {\n-42 visitor.leaf(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-43 }\n-44\n-45 /*\n-46 * This is the general overload doing static child traversal.\n-47 */\n-48 template<class T1, class T2, class TreePath, class V,\n-49 std::enable_if_t<not(std::decay_t<T1>::isLeaf or std::decay_t<T2>::isLeaf),\n-int> = 0>\n-50 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(T1&& tree1, T2&& tree2, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n-51 {\n-52 // Do we really want to take care for const-ness of the Tree\n-53 // when instanciating VisitChild below? I'd rather expect this:\n-54 // using Tree1 = std::decay_t<T1>;\n-55 // using Tree2 = std::decay_t<T2>;\n-56 // using Visitor = std::decay_t<V>;\n-57 using Tree1 = std::remove_reference_t<T1>;\n-58 using Tree2 = std::remove_reference_t<T2>;\n-59 using Visitor = std::remove_reference_t<V>;\n-60 visitor.pre(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-61\n-62 // check which type of traversal is supported by the trees\n-63 using allowDynamicTraversal = std::conjunction<\n-64 Dune::Std::is_detected<DynamicTraversalConcept,Tree1>,\n-65 Dune::Std::is_detected<DynamicTraversalConcept,Tree2>>;\n-66 using allowStaticTraversal = std::conjunction<\n-67 Dune::Std::is_detected<StaticTraversalConcept,Tree1>,\n-68 Dune::Std::is_detected<StaticTraversalConcept,Tree2>>;\n-69\n-70 // both trees must support either dynamic or static traversal\n-71 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n+25 template<typename SourceNode, typename Transformation, typename\n+TransformedNode>\n+_\b2_\b6 struct _\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+27 {\n+28\n+_\b2_\b9 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = false;\n+30\n+_\b3_\b1 typedef TransformedNode _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be;\n+_\b3_\b2 typedef std::shared_ptr<transformed_type> _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+33\n+_\b3_\b4 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const Transformation&\n+t)\n+35 {\n+36 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be();\n+37 }\n+38\n+_\b3_\b9 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n+SourceNode> s, const Transformation& t)\n+40 {\n+41 return std::make_shared<transformed_type>();\n+42 }\n+43\n+44 };\n+45\n+46\n+47 template<typename SourceNode, typename Transformation, template<typename\n+Child, std::size_t> class TransformedNode>\n+_\b4_\b8 struct _\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+49 {\n+50\n+_\b5_\b1 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+52\n+53 template<typename TC>\n+_\b5_\b4 struct _\br_\be_\bs_\bu_\bl_\bt\n+55 {\n+_\b5_\b6 typedef TransformedNode<TC, StaticDegree<SourceNode>::value> _\bt_\by_\bp_\be;\n+_\b5_\b7 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+_\b5_\b8 static const std::size_t _\bd_\be_\bg_\br_\be_\be = _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be_\b<_\bt_\by_\bp_\be_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+59 };\n+60\n+61 template<typename TC>\n+_\b6_\b2 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>&\n+children)\n+63 {\n+64 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(children);\n+65 }\n+66\n+67 template<typename TC>\n+_\b6_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, const std::array<std::\n+shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>& children)\n+69 {\n+70 return std::make_shared<typename result<TC>::type>(children);\n+71 }\n 72\n-73 // the visitor may specify preferred dynamic traversal\n-74 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n-TreePathType::dynamic>;\n+73 };\n+74\n 75\n-76 // create a dynamic or static index range\n-77 auto indices = [&]{\n-78 if constexpr(preferDynamicTraversal::value && allowDynamicTraversal::value)\n-79 return Dune::range(std::size_t(tree1.degree()));\n-80 else\n-81 return Dune::range(tree1.degree());\n-82 }();\n-83\n-84 if constexpr(allowDynamicTraversal::value || allowStaticTraversal::value) {\n-85 Dune::Hybrid::forEach(indices, [&](auto i) {\n-86 auto&& child1 = tree1.child(i);\n-87 auto&& child2 = tree2.child(i);\n-88 using Child1 = std::decay_t<decltype(child1)>;\n-89 using Child2 = std::decay_t<decltype(child2)>;\n-90\n-91 visitor.beforeChild(tree1, child1, tree2, child2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-92\n-93 // This requires that visitor.in(...) can always be instantiated,\n-94 // even if there's a single child only.\n-95 if (i>0)\n-96 visitor.in(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-97\n-98 constexpr bool visitChild = Visitor::template\n-VisitChild<Tree1,Child1,Tree2,Child2,TreePath>::value;\n-99 if constexpr(visitChild) {\n-100 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-101 _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(child1, child2, childTreePath, visitor);\n-102 }\n+76 template<typename SourceNode, typename Transformation, template<typename\n+Child> class TransformedNode>\n+_\b7_\b7 struct _\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+78 {\n+79\n+_\b8_\b0 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+81\n+82 template<typename TC>\n+_\b8_\b3 struct _\br_\be_\bs_\bu_\bl_\bt\n+84 {\n+_\b8_\b5 typedef TransformedNode<TC> _\bt_\by_\bp_\be;\n+_\b8_\b6 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+87 };\n+88\n+89 template<typename TC>\n+_\b9_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, const std::vector<std::shared_ptr<TC>>& children)\n+91 {\n+92 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(children);\n+93 }\n+94\n+95 template<typename TC>\n+_\b9_\b6 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, const std::\n+vector<std::shared_ptr<TC>>& children)\n+97 {\n+98 return std::make_shared<typename result<TC>::type>(children);\n+99 }\n+100\n+101 };\n+102\n 103\n-104 visitor.afterChild(tree1, child1, tree2, child2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-105 });\n-106 }\n-107 visitor.post(tree1, tree2, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-108 }\n+104 template<typename SourceNode, typename Transformation,\n+template<typename...> class TransformedNode>\n+_\b1_\b0_\b5 struct _\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+106 {\n+107\n+_\b1_\b0_\b8 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n 109\n-110 } // namespace Detail\n-111\n-113\n-127 template<typename Tree1, typename Tree2, typename Visitor>\n-_\b1_\b2_\b8 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(Tree1&& tree1, Tree2&& tree2, Visitor&& visitor)\n-129 {\n-130 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br(tree1, tree2, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor);\n-131 }\n+110 template<typename... TC>\n+_\b1_\b1_\b1 struct _\br_\be_\bs_\bu_\bl_\bt\n+112 {\n+_\b1_\b1_\b3 typedef TransformedNode<TC...> _\bt_\by_\bp_\be;\n+_\b1_\b1_\b4 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+115 };\n+116\n+117 template<typename... TC>\n+_\b1_\b1_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, std::shared_ptr<TC>... children)\n+119 {\n+120 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(children...);\n+121 }\n+122\n+123 template<typename... TC>\n+_\b1_\b2_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, std::shared_ptr<TC>...\n+children)\n+125 {\n+126 return std::make_shared<typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type>(children...);\n+127 }\n+128\n+129 };\n+130\n 132\n-134\n-135 } // namespace TypeTree\n-136} //namespace Dune\n-137\n-138#endif // DUNE_TYPETREE_PAIRTRAVERSAL_HH\n-_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh\n-_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+133 } // namespace TypeTree\n+134} //namespace Dune\n+135\n+136#endif // DUNE_TYPETREE_SIMPLETRANSFORMATIONDESCRIPTORS_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br\n-void applyToTreePair(Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)\n-Apply visitor to a pair of TypeTrees.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pairtraversal.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n-T... > &tp, std::size_t i)\n-Appends a run time index to a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto hybridTreePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n+decltype(Node::degree()) StaticDegree\n+Returns the statically known degree of the given Node type as a std::\n+integral_constant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be_\bP_\ba_\bi_\br\n-void applyToTreePair(T1 &&tree1, T2 &&tree2, TreePath treePath, V &&visitor)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pairtraversal.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(const SourceNode &s, const Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< transformed_type > transformed_storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static transformed_storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be\n+TransformedNode transformed_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC\n+>, result< TC >::degree > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(const SourceNode &s, const Transformation\n+&t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< TC, StaticDegree< SourceNode >::value > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static const std::size_t degree\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(const SourceNode &s, const Transformation\n+&t, const std::vector< std::shared_ptr< TC > > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC\n+> > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< TC > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC... >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC... >::type transform(const SourceNode &s, const\n+Transformation &t, std::shared_ptr< TC >... children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< TC... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simpletransformationdescriptors.hh:113\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00068.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00068.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: leafnode.hh File Reference</title>\n+<title>dune-typetree: generictransformationdescriptors.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,27 +72,47 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">leafnode.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">generictransformationdescriptors.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <cstddef></code><br />\n-<code>#include <type_traits></code><br />\n+<div class=\"textblock\"><code>#include <array></code><br />\n+<code>#include <memory></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code><br />\n+<code>#include <dune/common/exceptions.hh></code><br />\n </div>\n <p><a href=\"a00068_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01240.html\">Dune::TypeTree::LeafNode</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for leaf nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01240.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01200.html\">Dune::TypeTree::GenericLeafNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01208.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01212.html\">Dune::TypeTree::GenericPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01220.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01224.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01232.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01236.html\">Dune::TypeTree::GenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNode ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,52 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-leafnode.hh File Reference\n+generictransformationdescriptors.hh File Reference\n+#include <array>\n+#include <memory>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <cstddef>\n-#include <type_traits>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh>\n+#include <dune/common/exceptions.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n-\u00a0 Base class for leaf nodes in a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00068_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00068_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: leafnode.hh Source File</title>\n+<title>dune-typetree: generictransformationdescriptors.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,75 +74,288 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">leafnode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">generictransformationdescriptors.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00068.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_LEAFNODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_LEAFNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cstddef></span></div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00086.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> </div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> TransformedNode></div>\n <div class=\"foldopen\" id=\"foldopen00027\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html\"> 27</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01240.html\">LeafNode</a></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html\"> 27</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01200.html\">GenericLeafNodeTransformation</a></div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> {</div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\"> 30</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\">recursive</a> = <span class=\"keyword\">false</span>;</div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\"> 33</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\">isLeaf</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\"> 32</a></span> <span class=\"keyword\">typedef</span> TransformedNode <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\"> 33</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<transformed_type> <a class=\"code hl_typedef\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">transformed_storage_type</a>;</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\"> 36</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\"> 39</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\"> 42</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a> <a class=\"code hl_typedef\" href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\">NodeTag</a>;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\"> 44</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\">degree</a>()</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> {</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,0>{};</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#afa094041574f399950f3b93f49b295d1\"> 35</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a> <a class=\"code hl_function\" href=\"a01200.html#afa094041574f399950f3b93f49b295d1\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>(s,t);</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\"> 40</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a> <a class=\"code hl_function\" href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a>(s,t);</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\"> 45</a></span> <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">transformed_storage_type</a> <a class=\"code hl_function\" href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> <span class=\"keywordflow\">return</span> std::make_shared<transformed_type>(s,t);</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n <div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\"> 57</a></span> <a class=\"code hl_function\" href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\">LeafNode</a>() {}</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> };</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html\"> 54</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01204.html\">TemplatizedGenericPowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\"> 57</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html\"> 60</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01208.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> {</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\"> 62</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC>::type <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\"> 63</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\"> 64</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\">degree</a> = <a class=\"code hl_typedef\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree<type>::value</a>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\"> 68</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> {</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00074\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\"> 74</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> {</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">result<TC>::type</a>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\"> 80</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::array<std::shared_ptr<TC>,<a class=\"code hl_struct\" href=\"a01208.html\">result<TC>::degree</a>>& children)</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> {</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00089\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01212.html\"> 89</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01212.html\">GenericPowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01204.html\">TemplatizedGenericPowerNodeTransformation</a><SourceNode,</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> GenericPowerNodeTransformationTemplate<SourceNode,</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> TransformedNode>::template result</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> ></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n+<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html\"> 100</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01216.html\">TemplatizedGenericDynamicPowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> {</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\"> 103</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html\"> 106</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01220.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> {</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\"> 108</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC>::type <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\"> 109</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\"> 113</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> {</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00119\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\"> 119</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a> <a class=\"code hl_function\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> {</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">result<TC>::type</a>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00125\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\"> 125</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">result<TC>::storage_type</a> <a class=\"code hl_function\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, <span class=\"keyword\">const</span> std::vector<std::shared_ptr<TC>>& children)</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> {</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">return</span> std::make_shared<typename result<TC>::type>(s,t,children);</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01224.html\"> 134</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01224.html\">GenericDynamicPowerNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01216.html\">TemplatizedGenericDynamicPowerNodeTransformation</a><SourceNode,</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> GenericDynamicPowerNodeTransformationTemplate<SourceNode,</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> TransformedNode>::template result</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> ></div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNodeTemplate></div>\n+<div class=\"foldopen\" id=\"foldopen00145\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html\"> 145</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01228.html\">TemplatizedGenericCompositeNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> {</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#af1318e760833875048c269c471af03e1\"> 148</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01228.html#af1318e760833875048c269c471af03e1\">recursive</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00151\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html\"> 151</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01232.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> {</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\"> 153</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> TransformedNodeTemplate<TC...><a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">::type</a> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\"> 154</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<type> <a class=\"code hl_typedef\" href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\">storage_type</a>;</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\"> 158</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">transform</a>(<span class=\"keyword\">const</span> SourceNode& s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> {</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">result<TC...>::type</a>(s,t,children...);</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00164\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\"> 164</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type <a class=\"code hl_function\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">transform</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">typename</span> <a class=\"code hl_typedef\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">result<TC...>::type</a>(s,t,children...);</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00170\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\"> 170</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::storage_type <a class=\"code hl_function\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">transform_storage</a>(std::shared_ptr<const SourceNode> s, <span class=\"keyword\">const</span> Transformation& t, std::shared_ptr<TC>... children)</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> {</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> <span class=\"keywordflow\">return</span> std::make_shared<<span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01232.html\">result</a><TC...>::type>(s,t,children...);</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00179\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01236.html\"> 179</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01236.html\">GenericCompositeNodeTransformation</a></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01228.html\">TemplatizedGenericCompositeNodeTransformation</a><SourceNode,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> GenericCompositeNodeTransformationTemplate<SourceNode,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> TransformedNode>::template result</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> ></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> {};</div>\n </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERNODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> </div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> </div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00086_html\"><div class=\"ttname\"><a href=\"a00086.html\">powercompositenodetransformationtemplates.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00092_html_gad5f09e67114a2b620494f80cff734a02\"><div class=\"ttname\"><a href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">Dune::TypeTree::StaticDegree</a></div><div class=\"ttdeci\">decltype(Node::degree()) StaticDegree</div><div class=\"ttdoc\">Returns the statically known degree of the given Node type as a std::integral_constant.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:107</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01240_html\"><div class=\"ttname\"><a href=\"a01240.html\">Dune::TypeTree::LeafNode</a></div><div class=\"ttdoc\">Base class for leaf nodes in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:28</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_a157d29cab82c4fdb53381f981ecc98df\"><div class=\"ttname\"><a href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\">Dune::TypeTree::LeafNode::NodeTag</a></div><div class=\"ttdeci\">LeafNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a LeafNode.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:42</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_a2c525318cbe13c3e99a1f0bcfe1e19e0\"><div class=\"ttname\"><a href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\">Dune::TypeTree::LeafNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as a leaf in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:33</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_a8bf984f7d84fb1df57bfcbdf16eb2f1d\"><div class=\"ttname\"><a href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\">Dune::TypeTree::LeafNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:36</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_a8c18e6a68a8738147f5b762766ad7de8\"><div class=\"ttname\"><a href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\">Dune::TypeTree::LeafNode::LeafNode</a></div><div class=\"ttdeci\">LeafNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_ace159eb403f520e6e813439f7f7fa260\"><div class=\"ttname\"><a href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\">Dune::TypeTree::LeafNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:39</div></div>\n-<div class=\"ttc\" id=\"aa01240_html_aeeefe6c03e821e35aaade4d737500f53\"><div class=\"ttname\"><a href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\">Dune::TypeTree::LeafNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:44</div></div>\n-<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n+<div class=\"ttc\" id=\"aa01200_html\"><div class=\"ttname\"><a href=\"a01200.html\">Dune::TypeTree::GenericLeafNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:28</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_a56ff1d056f549d38a889a5f6201d7c2b\"><div class=\"ttname\"><a href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">Dune::TypeTree::GenericLeafNodeTransformation::transformed_type</a></div><div class=\"ttdeci\">TransformedNode transformed_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:32</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_a78d2e8afed4a03be36b8c8b6d5d5533b\"><div class=\"ttname\"><a href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">Dune::TypeTree::GenericLeafNodeTransformation::transformed_storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< transformed_type > transformed_storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:33</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_a7da405da31c1d9126a215285950cd12d\"><div class=\"ttname\"><a href=\"a01200.html#a7da405da31c1d9126a215285950cd12d\">Dune::TypeTree::GenericLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:40</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_aad84fe33720a00e3d6b140095919e3e2\"><div class=\"ttname\"><a href=\"a01200.html#aad84fe33720a00e3d6b140095919e3e2\">Dune::TypeTree::GenericLeafNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:30</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_ae0f0319b7ea5a1ee562d64c553e18631\"><div class=\"ttname\"><a href=\"a01200.html#ae0f0319b7ea5a1ee562d64c553e18631\">Dune::TypeTree::GenericLeafNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:45</div></div>\n+<div class=\"ttc\" id=\"aa01200_html_afa094041574f399950f3b93f49b295d1\"><div class=\"ttname\"><a href=\"a01200.html#afa094041574f399950f3b93f49b295d1\">Dune::TypeTree::GenericLeafNodeTransformation::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceNode &s, const Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:35</div></div>\n+<div class=\"ttc\" id=\"aa01204_html\"><div class=\"ttname\"><a href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:55</div></div>\n+<div class=\"ttc\" id=\"aa01204_html_a3d9a9e0f27a5e475276e4205621e5c79\"><div class=\"ttname\"><a href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:80</div></div>\n+<div class=\"ttc\" id=\"aa01204_html_ab42ec41914479dc39213ffbf0b96fcbe\"><div class=\"ttname\"><a href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01204_html_ae10134b6435c658d56d2a37c78507a05\"><div class=\"ttname\"><a href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:74</div></div>\n+<div class=\"ttc\" id=\"aa01204_html_af11cbb8f56e5e0f62cd20c76e0f0c8e7\"><div class=\"ttname\"><a href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:68</div></div>\n+<div class=\"ttc\" id=\"aa01208_html\"><div class=\"ttname\"><a href=\"a01208.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:61</div></div>\n+<div class=\"ttc\" id=\"aa01208_html_a2718d8db626a4e44fab6ae162d3a8159\"><div class=\"ttname\"><a href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:62</div></div>\n+<div class=\"ttc\" id=\"aa01208_html_ab1aa077f01c3d1686ab63b872f093ed4\"><div class=\"ttname\"><a href=\"a01208.html#ab1aa077f01c3d1686ab63b872f093ed4\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::degree</a></div><div class=\"ttdeci\">static const std::size_t degree</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:64</div></div>\n+<div class=\"ttc\" id=\"aa01208_html_adf9e43bec2ce06621f833d057ff40e44\"><div class=\"ttname\"><a href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:63</div></div>\n+<div class=\"ttc\" id=\"aa01212_html\"><div class=\"ttname\"><a href=\"a01212.html\">Dune::TypeTree::GenericPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa01216_html\"><div class=\"ttname\"><a href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:101</div></div>\n+<div class=\"ttc\" id=\"aa01216_html_a1d0bd277a0159043e898b4a20597d240\"><div class=\"ttname\"><a href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:119</div></div>\n+<div class=\"ttc\" id=\"aa01216_html_a36d08b6a82553e52143dc485bc87282e\"><div class=\"ttname\"><a href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:103</div></div>\n+<div class=\"ttc\" id=\"aa01216_html_a63e0d400d764a3dc8d5f7405e8322c6a\"><div class=\"ttname\"><a href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa01216_html_a8c26231252b44ac96911a148c7167635\"><div class=\"ttname\"><a href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:125</div></div>\n+<div class=\"ttc\" id=\"aa01220_html\"><div class=\"ttname\"><a href=\"a01220.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:107</div></div>\n+<div class=\"ttc\" id=\"aa01220_html_a91eb0b26c6593dc47b7b05ccea59b44d\"><div class=\"ttname\"><a href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:108</div></div>\n+<div class=\"ttc\" id=\"aa01220_html_ad459c392296a41aa198499c721f8914b\"><div class=\"ttname\"><a href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:109</div></div>\n+<div class=\"ttc\" id=\"aa01224_html\"><div class=\"ttname\"><a href=\"a01224.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:141</div></div>\n+<div class=\"ttc\" id=\"aa01228_html\"><div class=\"ttname\"><a href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:146</div></div>\n+<div class=\"ttc\" id=\"aa01228_html_a2673a334b31c21643e21969c0ac6a98a\"><div class=\"ttname\"><a href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:158</div></div>\n+<div class=\"ttc\" id=\"aa01228_html_a84dabf5dfd5db413b81069fb712e9019\"><div class=\"ttname\"><a href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform_storage</a></div><div class=\"ttdeci\">static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:170</div></div>\n+<div class=\"ttc\" id=\"aa01228_html_a91d90ba3bb91b6d7bb7d75d8995251e4\"><div class=\"ttname\"><a href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::transform</a></div><div class=\"ttdeci\">static result< TC... >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:164</div></div>\n+<div class=\"ttc\" id=\"aa01228_html_af1318e760833875048c269c471af03e1\"><div class=\"ttname\"><a href=\"a01228.html#af1318e760833875048c269c471af03e1\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::recursive</a></div><div class=\"ttdeci\">static const bool recursive</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:148</div></div>\n+<div class=\"ttc\" id=\"aa01232_html\"><div class=\"ttname\"><a href=\"a01232.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:152</div></div>\n+<div class=\"ttc\" id=\"aa01232_html_a9c7f4657753bbb8afcecb5be7ed09264\"><div class=\"ttname\"><a href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result::type</a></div><div class=\"ttdeci\">TransformedNodeTemplate< TC... >::type type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:153</div></div>\n+<div class=\"ttc\" id=\"aa01232_html_add8b889493a0a7300736fb8ceeb52e64\"><div class=\"ttname\"><a href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation::result::storage_type</a></div><div class=\"ttdeci\">std::shared_ptr< type > storage_type</div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:154</div></div>\n+<div class=\"ttc\" id=\"aa01236_html\"><div class=\"ttname\"><a href=\"a01236.html\">Dune::TypeTree::GenericCompositeNodeTransformation</a></div><div class=\"ttdef\"><b>Definition</b> generictransformationdescriptors.hh:186</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,88 +1,347 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-leafnode.hh\n+generictransformationdescriptors.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_LEAFNODE_HH\n-7#define DUNE_TYPETREE_LEAFNODE_HH\n+6#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n+7#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n 8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-10#include <cstddef>\n-11#include <type_traits>\n-12\n-13namespace _\bD_\bu_\bn_\be {\n-14 namespace TypeTree {\n-15\n-_\b2_\b7 class _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+9#include <array>\n+10#include <memory>\n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh>\n+15#include <dune/common/exceptions.hh>\n+16\n+17\n+18namespace _\bD_\bu_\bn_\be {\n+19 namespace TypeTree {\n+20\n+26 template<typename SourceNode, typename Transformation, typename\n+TransformedNode>\n+_\b2_\b7 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n 28 {\n 29\n-30 public:\n+_\b3_\b0 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = false;\n 31\n-_\b3_\b3 static const bool _\bi_\bs_\bL_\be_\ba_\bf = true;\n+_\b3_\b2 typedef TransformedNode _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be;\n+_\b3_\b3 typedef std::shared_ptr<transformed_type> _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n 34\n-_\b3_\b6 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n-37\n-_\b3_\b9 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n-40\n-_\b4_\b2 typedef _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n-43\n-_\b4_\b4 static constexpr auto _\bd_\be_\bg_\br_\be_\be()\n-45 {\n-46 return std::integral_constant<std::size_t,0>{};\n-47 }\n-48\n-49 protected:\n-50\n+_\b3_\b5 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const Transformation&\n+t)\n+36 {\n+37 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be(s,t);\n+38 }\n+39\n+_\b4_\b0 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceNode> s, const\n+Transformation& t)\n+41 {\n+42 return _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be(s,t);\n+43 }\n+44\n+_\b4_\b5 static _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n+SourceNode> s, const Transformation& t)\n+46 {\n+47 return std::make_shared<transformed_type>(s,t);\n+48 }\n+49\n+50 };\n+51\n 52\n-_\b5_\b7 _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be() {}\n-58 };\n-59\n-61\n-62 } // namespace TypeTree\n-63} //namespace Dune\n-64\n-65#endif // DUNE_TYPETREE_POWERNODE_HH\n+53 template<typename SourceNode, typename Transformation, template<typename\n+Child> class TransformedNodeTemplate>\n+_\b5_\b4 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+55 {\n+56\n+_\b5_\b7 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+58\n+59 template<typename TC>\n+_\b6_\b0 struct _\br_\be_\bs_\bu_\bl_\bt\n+61 {\n+_\b6_\b2 typedef typename TransformedNodeTemplate<TC>::type _\bt_\by_\bp_\be;\n+_\b6_\b3 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+_\b6_\b4 static const std::size_t _\bd_\be_\bg_\br_\be_\be = _\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be_\b<_\bt_\by_\bp_\be_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+65 };\n+66\n+67 template<typename TC>\n+_\b6_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>&\n+children)\n+69 {\n+70 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n+71 }\n+72\n+73 template<typename TC>\n+_\b7_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceNode>\n+s, const Transformation& t, const std::array<std::shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:\n+_\bd_\be_\bg_\br_\be_\be>& children)\n+75 {\n+76 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n+77 }\n+78\n+79 template<typename TC>\n+_\b8_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, const std::array<std::\n+shared_ptr<TC>,_\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bd_\be_\bg_\br_\be_\be>& children)\n+81 {\n+82 return std::make_shared<typename result<TC>::type>(s,t,children);\n+83 }\n+84\n+85 };\n+86\n+87\n+88 template<typename SourceNode, typename Transformation,\n+template<typename,typename,std::size_t> class TransformedNode>\n+_\b8_\b9 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+90 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n+91 Transformation,\n+92 GenericPowerNodeTransformationTemplate<SourceNode,\n+93 Transformation,\n+94 TransformedNode>::template result\n+95 >\n+96 {};\n+97\n+98\n+99 template<typename SourceNode, typename Transformation, template<typename\n+Child> class TransformedNodeTemplate>\n+_\b1_\b0_\b0 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+101 {\n+102\n+_\b1_\b0_\b3 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+104\n+105 template<typename TC>\n+_\b1_\b0_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n+107 {\n+_\b1_\b0_\b8 typedef typename TransformedNodeTemplate<TC>::type _\bt_\by_\bp_\be;\n+_\b1_\b0_\b9 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+110 };\n+111\n+112 template<typename TC>\n+_\b1_\b1_\b3 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, const std::vector<std::shared_ptr<TC>>& children)\n+114 {\n+115 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n+116 }\n+117\n+118 template<typename TC>\n+_\b1_\b1_\b9 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const\n+SourceNode> s, const Transformation& t, const std::vector<std::shared_ptr<TC>>&\n+children)\n+120 {\n+121 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children);\n+122 }\n+123\n+124 template<typename TC>\n+_\b1_\b2_\b5 static typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b>_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, const std::\n+vector<std::shared_ptr<TC>>& children)\n+126 {\n+127 return std::make_shared<typename result<TC>::type>(s,t,children);\n+128 }\n+129\n+130 };\n+131\n+132\n+133 template<typename SourceNode, typename Transformation,\n+template<typename,typename> class TransformedNode>\n+_\b1_\b3_\b4 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+135 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n+136 Transformation,\n+137 GenericDynamicPowerNodeTransformationTemplate<SourceNode,\n+138 Transformation,\n+139 TransformedNode>::template result\n+140 >\n+141 {};\n+142\n+143\n+144 template<typename SourceNode, typename Transformation,\n+template<typename...> class TransformedNodeTemplate>\n+_\b1_\b4_\b5 struct _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+146 {\n+147\n+_\b1_\b4_\b8 static const bool _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be = true;\n+149\n+150 template<typename... TC>\n+_\b1_\b5_\b1 struct _\br_\be_\bs_\bu_\bl_\bt\n+152 {\n+_\b1_\b5_\b3 typedef typename TransformedNodeTemplate<TC...>_\b:_\b:_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n+_\b1_\b5_\b4 typedef std::shared_ptr<type> _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be;\n+155 };\n+156\n+157 template<typename... TC>\n+_\b1_\b5_\b8 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceNode& s, const\n+Transformation& t, std::shared_ptr<TC>... children)\n+159 {\n+160 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children...);\n+161 }\n+162\n+163 template<typename... TC>\n+_\b1_\b6_\b4 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const\n+SourceNode> s, const Transformation& t, std::shared_ptr<TC>... children)\n+165 {\n+166 return typename _\br_\be_\bs_\bu_\bl_\bt_\b<_\bT_\bC_\b._\b._\b._\b>_\b:_\b:_\bt_\by_\bp_\be(s,t,children...);\n+167 }\n+168\n+169 template<typename... TC>\n+_\b1_\b7_\b0 static typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::\n+shared_ptr<const SourceNode> s, const Transformation& t, std::shared_ptr<TC>...\n+children)\n+171 {\n+172 return std::make_shared<typename _\br_\be_\bs_\bu_\bl_\bt<TC...>::type>(s,t,children...);\n+173 }\n+174\n+175 };\n+176\n+177\n+178 template<typename SourceNode, typename Transformation,\n+template<typename,typename...> class TransformedNode>\n+_\b1_\b7_\b9 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+180 : public _\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn<SourceNode,\n+181 Transformation,\n+182 GenericCompositeNodeTransformationTemplate<SourceNode,\n+183 Transformation,\n+184 TransformedNode>::template result\n+185 >\n+186 {};\n+187\n+189\n+190 } // namespace TypeTree\n+191} //namespace Dune\n+192\n+193#endif // DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bp_\bo_\bw_\be_\br_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bn_\bo_\bd_\be_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bD_\be_\bg_\br_\be_\be\n+decltype(Node::degree()) StaticDegree\n+Returns the statically known degree of the given Node type as a std::\n+integral_constant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:107\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n-Base class for leaf nodes in a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-LeafNodeTag NodeTag\n-The type tag that describes a LeafNode.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Mark this class as a leaf in a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n-static const bool isPower\n-Mark this class as a non power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n-LeafNode()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a non composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static constexpr auto degree()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a leaf node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bt_\by_\bp_\be\n+TransformedNode transformed_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< transformed_type > transformed_storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(std::shared_ptr< const SourceNode > s, const\n+Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static transformed_storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(const SourceNode &s, const Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC\n+>, result< TC >::degree > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(std::shared_ptr< const SourceNode > s,\n+const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC\n+>::degree > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(const SourceNode &s, const Transformation\n+&t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNodeTemplate< TC >::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static const std::size_t degree\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(std::shared_ptr< const SourceNode > s,\n+const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC >::type transform(const SourceNode &s, const Transformation\n+&t, const std::vector< std::shared_ptr< TC > > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC\n+> > &children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNodeTemplate< TC >::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:\n+_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC... >::type transform(const SourceNode &s, const\n+Transformation &t, std::shared_ptr< TC >... children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static result< TC... >::storage_type transform_storage(std::shared_ptr< const\n+SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static result< TC... >::type transform(std::shared_ptr< const SourceNode > s,\n+const Transformation &t, std::shared_ptr< TC >... children)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be\n+static const bool recursive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNodeTemplate< TC... >::type type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\be_\bm_\bp_\bl_\ba_\bt_\bi_\bz_\be_\bd_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:\n+_\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bt_\by_\bp_\be\n+std::shared_ptr< type > storage_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn generictransformationdescriptors.hh:186\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00071.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00071.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: filteredcompositenode.hh File Reference</title>\n+<title>dune-typetree: leafnode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,35 +72,27 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">filteredcompositenode.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">leafnode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <memory></code><br />\n-<code>#include <tuple></code><br />\n+<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <cstddef></code><br />\n <code>#include <type_traits></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code><br />\n-<code>#include <dune/common/shared_ptr.hh></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <dune/common/indices.hh></code><br />\n </div>\n <p><a href=\"a00071_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01092.html\">Dune::TypeTree::FilteredCompositeNode< Node, Filter ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for composite nodes representing a filtered view on an underlying composite node. <a href=\"a01092.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01100.html\">Dune::TypeTree::FilteredCompositeNode< Node, Filter >::Child< k ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01100.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01240.html\">Dune::TypeTree::LeafNode</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for leaf nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01240.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,22 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-filteredcompositenode.hh File Reference\n-#include <memory>\n-#include <tuple>\n-#include <type_traits>\n+leafnode.hh File Reference\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n-#include <dune/common/shared_ptr.hh>\n-#include <dune/common/typetraits.hh>\n-#include <dune/common/indices.hh>\n+#include <cstddef>\n+#include <type_traits>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>\n-\u00a0 Base class for composite nodes representing a filtered view on an\n- underlying composite node. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n-\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+\u00a0 Base class for leaf nodes in a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00071_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00071_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: filteredcompositenode.hh Source File</title>\n+<title>dune-typetree: leafnode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,287 +74,75 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">filteredcompositenode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">leafnode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00071.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_LEAFNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_LEAFNODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <cstddef></span></div>\n <div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n <div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00074.html\">dune/typetree/filters.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00074.html\">dune/typetree/filters.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"comment\">// Utility structs for filter construction and application</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"comment\">// Gets the filter and wraps it in case of a SimpleFilter.</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Tag></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">struct </span>get_filter;</div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00027\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html\"> 27</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01240.html\">LeafNode</a></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> {</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\"> 33</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\">isLeaf</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\"> 36</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\"> 39</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n <div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"comment\">// Helper struct to extract the child template parameter pack from the ChildTypes tuple.</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">struct </span>apply_filter_wrapper;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">struct </span>apply_filter_wrapper<Filter,Node,std::tuple<Children...> ></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> : <span class=\"keyword\">public</span> Filter::template apply<Node,Children...></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {};</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// specialization for SimpleFilter</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">struct </span>get_filter<Filter,SimpleFilterTag></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">struct </span>type</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> : <span class=\"keyword\">public</span> apply_filter_wrapper<filter<Filter>,Node,ChildTypes></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> {};</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> };</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> };</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"comment\">// specialization for AdvancedFilter</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keyword\">struct </span>get_filter<Filter,AdvancedFilterTag></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">struct </span>type</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> {</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> : <span class=\"keyword\">public</span> apply_filter_wrapper<Filter,Node,ChildTypes></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> {};</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> };</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> };</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Filter></div>\n-<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html\"> 82</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01092.html\">FilteredCompositeNode</a></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> {</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> get_filter<Filter,typename Filter::FilterTag>::type filter;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter::template apply<Node,typename Node::ChildTypes>::type filter_result;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter_result::template apply<Node> mapped_children;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> nodeIsConst = std::is_const<typename std::remove_reference<Node>::type>::value;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">struct </span>lazy_enable</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> value = !nodeIsConst;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> };</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\"> 100</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> <a class=\"code hl_typedef\" href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\">NodeTag</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\"> 103</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> mapped_children::NodeStorage <a class=\"code hl_typedef\" href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\"> 106</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> mapped_children::ChildTypes <a class=\"code hl_typedef\" href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\">ChildTypes</a>;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\"> 109</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\"> 112</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\"> 115</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\">isComposite</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\"> 117</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\">degree</a> ()</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,filter_result::size>{};</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html\"> 124</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01100.html\">Child</a> {</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,typename mapped_children::Children>::type OriginalChild;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t mapped_index = std::tuple_element<k,typename filter_result::IndexMap>::type::original_index;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\"> 135</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> OriginalChild::Type <a class=\"code hl_typedef\" href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\">Type</a>;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html#a2635488bf3f3d4435514486803609e55\"> 138</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> OriginalChild::type <a class=\"code hl_typedef\" href=\"a01100.html#a2635488bf3f3d4435514486803609e55\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\"> 150</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"keywordflow\">return</span> _node->template child<Child<k>::mapped_index>();</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00160\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\"> 160</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keywordflow\">return</span> _node->template child<Child<k>::mapped_index>();</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\"> 171</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\">childStorage</a> (index_constant<k> = {})</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> {</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keywordflow\">return</span> _node->template childStorage<Child<k>::mapped_index>();</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n-<div class=\"foldopen\" id=\"foldopen00181\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\"> 181</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> {</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keywordflow\">return</span> _node->template childStorage<Child<k>::mapped_index>();</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k, <span class=\"keyword\">class</span> ChildType></div>\n-<div class=\"foldopen\" id=\"foldopen00188\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\"> 188</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\">setChild</a> (ChildType&& <a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value,<span class=\"keywordtype\">void</span>*>::type = 0)</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> {</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> _node->template setChild<Child<k>::mapped_index>(std::forward<ChildType>(<a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a>));</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> </div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !nodeIsConst></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n-<div class=\"foldopen\" id=\"foldopen00206\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\"> 206</a></span> <a class=\"code hl_function\" href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\">unfiltered</a> ()</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> {</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keywordflow\">return</span> *_node;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> </div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\"> 215</a></span> <span class=\"keyword\">const</span> Node& <a class=\"code hl_function\" href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\">unfiltered</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keywordflow\">return</span> *_node;</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !nodeIsConst></div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,std::shared_ptr<Node> >::type</div>\n-<div class=\"foldopen\" id=\"foldopen00226\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a78e69adc470eda059817cfad9178945e\"> 226</a></span> <a class=\"code hl_function\" href=\"a01092.html#a78e69adc470eda059817cfad9178945e\">unfilteredStorage</a> ()</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> {</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keywordflow\">return</span> _node;</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00235\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\"> 235</a></span> std::shared_ptr<const Node> <a class=\"code hl_function\" href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\">unfilteredStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keywordflow\">return</span> _node;</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00248\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\"> 248</a></span> <a class=\"code hl_function\" href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\">FilteredCompositeNode</a> (std::shared_ptr<Node> node)</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> : _node(std::move(node))</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00253\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\"> 253</a></span> <a class=\"code hl_function\" href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\">FilteredCompositeNode</a> (Node& node)</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> : _node(stackobject_to_shared_ptr(node))</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> std::shared_ptr<Node> _node;</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00074_html\"><div class=\"ttname\"><a href=\"a00074.html\">filters.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\"> 42</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a> <a class=\"code hl_typedef\" href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\"> 44</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\">degree</a>()</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> {</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,0>{};</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\"> 57</a></span> <a class=\"code hl_function\" href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\">LeafNode</a>() {}</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERNODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01092_html\"><div class=\"ttname\"><a href=\"a01092.html\">Dune::TypeTree::FilteredCompositeNode</a></div><div class=\"ttdoc\">Base class for composite nodes representing a filtered view on an underlying composite node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a1f60c9d0bdbd9759d683281bccdf5380\"><div class=\"ttname\"><a href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\">Dune::TypeTree::FilteredCompositeNode::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:181</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a2cf6550eeb948b6d646001024f236a79\"><div class=\"ttname\"><a href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\">Dune::TypeTree::FilteredCompositeNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:117</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a40d9cc8420a84db2f55146a0991854c8\"><div class=\"ttname\"><a href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\">Dune::TypeTree::FilteredCompositeNode::NodeStorage</a></div><div class=\"ttdeci\">mapped_children::NodeStorage NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:103</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a504bd599d2e1c88acf62851575632eb1\"><div class=\"ttname\"><a href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\">Dune::TypeTree::FilteredCompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(ChildType &&child, typename std::enable_if< lazy_enable< k >::value, void * >::type=0)</div><div class=\"ttdoc\">Sets the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:188</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a52d7699cb0821c4d7c7f58e8f25b04a3\"><div class=\"ttname\"><a href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\">Dune::TypeTree::FilteredCompositeNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:109</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a5ead69e6cbddece295e5612b2c30bcd7\"><div class=\"ttname\"><a href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\">Dune::TypeTree::FilteredCompositeNode::unfiltered</a></div><div class=\"ttdeci\">const Node & unfiltered() const</div><div class=\"ttdoc\">Returns the unfiltered node (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:215</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a6814ea4fd113b68b14eeccc3372119fa\"><div class=\"ttname\"><a href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\">Dune::TypeTree::FilteredCompositeNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:115</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a78e69adc470eda059817cfad9178945e\"><div class=\"ttname\"><a href=\"a01092.html#a78e69adc470eda059817cfad9178945e\">Dune::TypeTree::FilteredCompositeNode::unfilteredStorage</a></div><div class=\"ttdeci\">std::enable_if< enabled, std::shared_ptr< Node > >::type unfilteredStorage()</div><div class=\"ttdoc\">Returns the storage object of the unfiltered node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:226</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a83fbd6c6ae3d20b93d7417eb107437c4\"><div class=\"ttname\"><a href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\">Dune::TypeTree::FilteredCompositeNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:112</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a9092b3ecf47d44193e96ad796dc33a0d\"><div class=\"ttname\"><a href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\">Dune::TypeTree::FilteredCompositeNode::FilteredCompositeNode</a></div><div class=\"ttdeci\">FilteredCompositeNode(Node &node)</div><div class=\"ttdoc\">Initialize the CompositeNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:253</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_a960aedd24f4622a905e719a0f1ec289b\"><div class=\"ttname\"><a href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\">Dune::TypeTree::FilteredCompositeNode::FilteredCompositeNode</a></div><div class=\"ttdeci\">FilteredCompositeNode(std::shared_ptr< Node > node)</div><div class=\"ttdoc\">Initialize the CompositeNode with copies of the passed in Storage objects.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:248</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_aa2859d6bd1a7f3e9c16967e45adb3103\"><div class=\"ttname\"><a href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\">Dune::TypeTree::FilteredCompositeNode::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the k-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:171</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_aacf3017580c4be373e999b3e60d808d6\"><div class=\"ttname\"><a href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\">Dune::TypeTree::FilteredCompositeNode::child</a></div><div class=\"ttdeci\">const auto & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:160</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_ab2967e1126248e014670131d1a518e6b\"><div class=\"ttname\"><a href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">Dune::TypeTree::FilteredCompositeNode::child</a></div><div class=\"ttdeci\">auto & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the k-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:150</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_abeb406938826982e2af997d0e98f5d30\"><div class=\"ttname\"><a href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\">Dune::TypeTree::FilteredCompositeNode::NodeTag</a></div><div class=\"ttdeci\">CompositeNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a CompositeNode.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:100</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_ac83723482ae3c454a3acfb924c77b788\"><div class=\"ttname\"><a href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\">Dune::TypeTree::FilteredCompositeNode::ChildTypes</a></div><div class=\"ttdeci\">mapped_children::ChildTypes ChildTypes</div><div class=\"ttdoc\">A tuple storing the types of all children.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_ac9d3feb5c366598413763309e5d14c82\"><div class=\"ttname\"><a href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\">Dune::TypeTree::FilteredCompositeNode::unfiltered</a></div><div class=\"ttdeci\">std::enable_if< enabled, Node & >::type unfiltered()</div><div class=\"ttdoc\">Returns the unfiltered node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:206</div></div>\n-<div class=\"ttc\" id=\"aa01092_html_afbe74bbb8c43fdf387646fe21b3dada6\"><div class=\"ttname\"><a href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\">Dune::TypeTree::FilteredCompositeNode::unfilteredStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const Node > unfilteredStorage() const</div><div class=\"ttdoc\">Returns the storage object of the unfiltered node (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:235</div></div>\n-<div class=\"ttc\" id=\"aa01100_html\"><div class=\"ttname\"><a href=\"a01100.html\">Dune::TypeTree::FilteredCompositeNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:124</div></div>\n-<div class=\"ttc\" id=\"aa01100_html_a2635488bf3f3d4435514486803609e55\"><div class=\"ttname\"><a href=\"a01100.html#a2635488bf3f3d4435514486803609e55\">Dune::TypeTree::FilteredCompositeNode::Child::type</a></div><div class=\"ttdeci\">OriginalChild::type type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:138</div></div>\n-<div class=\"ttc\" id=\"aa01100_html_a7528d205d510cb903ff1907909d653e9\"><div class=\"ttname\"><a href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\">Dune::TypeTree::FilteredCompositeNode::Child::Type</a></div><div class=\"ttdeci\">OriginalChild::Type Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:135</div></div>\n-<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa01240_html\"><div class=\"ttname\"><a href=\"a01240.html\">Dune::TypeTree::LeafNode</a></div><div class=\"ttdoc\">Base class for leaf nodes in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:28</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_a157d29cab82c4fdb53381f981ecc98df\"><div class=\"ttname\"><a href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\">Dune::TypeTree::LeafNode::NodeTag</a></div><div class=\"ttdeci\">LeafNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a LeafNode.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:42</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_a2c525318cbe13c3e99a1f0bcfe1e19e0\"><div class=\"ttname\"><a href=\"a01240.html#a2c525318cbe13c3e99a1f0bcfe1e19e0\">Dune::TypeTree::LeafNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as a leaf in a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:33</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_a8bf984f7d84fb1df57bfcbdf16eb2f1d\"><div class=\"ttname\"><a href=\"a01240.html#a8bf984f7d84fb1df57bfcbdf16eb2f1d\">Dune::TypeTree::LeafNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:36</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_a8c18e6a68a8738147f5b762766ad7de8\"><div class=\"ttname\"><a href=\"a01240.html#a8c18e6a68a8738147f5b762766ad7de8\">Dune::TypeTree::LeafNode::LeafNode</a></div><div class=\"ttdeci\">LeafNode()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:57</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_ace159eb403f520e6e813439f7f7fa260\"><div class=\"ttname\"><a href=\"a01240.html#ace159eb403f520e6e813439f7f7fa260\">Dune::TypeTree::LeafNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:39</div></div>\n+<div class=\"ttc\" id=\"aa01240_html_aeeefe6c03e821e35aaade4d737500f53\"><div class=\"ttname\"><a href=\"a01240.html#aeeefe6c03e821e35aaade4d737500f53\">Dune::TypeTree::LeafNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> leafnode.hh:44</div></div>\n+<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,333 +1,88 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-filteredcompositenode.hh\n+leafnode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n-7#define DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n+6#ifndef DUNE_TYPETREE_LEAFNODE_HH\n+7#define DUNE_TYPETREE_LEAFNODE_HH\n 8\n-9#include <memory>\n-10#include <tuple>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+10#include <cstddef>\n 11#include <type_traits>\n 12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n-15#include <dune/common/shared_ptr.hh>\n-16#include <dune/common/typetraits.hh>\n-17#include <dune/common/indices.hh>\n-18\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-21\n-22namespace _\bD_\bu_\bn_\be {\n-23 namespace TypeTree {\n-24\n-30#ifndef DOXYGEN\n-31 namespace {\n-32\n-33 /\n-/\n-********************************************************************************\n-34 // Utility structs for filter construction and application\n-35 /\n-/\n-********************************************************************************\n-36\n-37 // Gets the filter and wraps it in case of a SimpleFilter.\n-38 template<typename Filter, typename Tag>\n-39 struct get_filter;\n+13namespace _\bD_\bu_\bn_\be {\n+14 namespace TypeTree {\n+15\n+_\b2_\b7 class _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+28 {\n+29\n+30 public:\n+31\n+_\b3_\b3 static const bool _\bi_\bs_\bL_\be_\ba_\bf = true;\n+34\n+_\b3_\b6 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n+37\n+_\b3_\b9 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n 40\n-41 // Helper struct to extract the child template parameter pack from the\n-ChildTypes tuple.\n-42 template<typename Filter, typename Node, typename ChildTypes>\n-43 struct apply_filter_wrapper;\n-44\n-45 template<typename Filter, typename Node, typename... Children>\n-46 struct apply_filter_wrapper<Filter,Node,std::tuple<Children...> >\n-47 : public Filter::template apply<Node,Children...>\n-48 {};\n-49\n-50 // specialization for SimpleFilter\n-51 template<typename Filter>\n-52 struct get_filter<Filter,SimpleFilterTag>\n-53 {\n-54 struct type\n-55 {\n-56 template<typename Node, typename ChildTypes>\n-57 struct apply\n-58 : public apply_filter_wrapper<filter<Filter>,Node,ChildTypes>\n-59 {};\n-60 };\n-61 };\n-62\n-63 // specialization for AdvancedFilter\n-64 template<typename Filter>\n-65 struct get_filter<Filter,AdvancedFilterTag>\n-66 {\n-67 struct type\n-68 {\n-69 template<typename Node, typename ChildTypes>\n-70 struct apply\n-71 : public apply_filter_wrapper<Filter,Node,ChildTypes>\n-72 {};\n-73 };\n-74 };\n-75\n-76 } // anonymous namespace\n-77#endif // DOXYGEN\n-78\n-79\n-81 template<typename Node, typename Filter>\n-_\b8_\b2 class _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-83 {\n-84\n-85 typedef typename get_filter<Filter,typename Filter::FilterTag>::type filter;\n-86 typedef typename filter::template apply<Node,typename Node::ChildTypes>::\n-type filter_result;\n-87 typedef typename filter_result::template apply<Node> mapped_children;\n-88\n-89 static const bool nodeIsConst = std::is_const<typename std::\n-remove_reference<Node>::type>::value;\n-90\n-91 template<std::size_t k>\n-92 struct lazy_enable\n-93 {\n-94 static const bool value = !nodeIsConst;\n-95 };\n-96\n-97 public:\n-98\n-_\b1_\b0_\b0 typedef _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n-101\n-_\b1_\b0_\b3 typedef typename mapped_children::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-104\n-_\b1_\b0_\b6 typedef typename mapped_children::ChildTypes _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n-107\n-_\b1_\b0_\b9 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n-110\n-_\b1_\b1_\b2 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n-113\n-_\b1_\b1_\b5 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = true;\n-116\n-_\b1_\b1_\b7 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n-118 {\n-119 return std::integral_constant<std::size_t,filter_result::size>{};\n-120 }\n-121\n-123 template<std::size_t k>\n-_\b1_\b2_\b4 struct _\bC_\bh_\bi_\bl_\bd {\n-125\n-126#ifndef DOXYGEN\n-127\n-128 typedef typename std::tuple_element<k,typename mapped_children::Children>::\n-type OriginalChild;\n-129\n-130 static const std::size_t mapped_index = std::tuple_element<k,typename\n-filter_result::IndexMap>::type::original_index;\n-131\n-132#endif // DOXYGEN\n-133\n-_\b1_\b3_\b5 typedef typename OriginalChild::Type _\bT_\by_\bp_\be;\n-136\n-_\b1_\b3_\b8 typedef typename OriginalChild::type _\bt_\by_\bp_\be;\n-139 };\n-140\n-143\n-145\n-148 template<std::size_t k,\n-149 typename std::enable_if<lazy_enable<k>::value, int>::type = 0>\n-_\b1_\b5_\b0 auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n-151 {\n-152 return _node->template child<Child<k>::mapped_index>();\n-153 }\n-154\n-156\n-159 template<std::size_t k>\n-_\b1_\b6_\b0 const auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n-161 {\n-162 return _node->template child<Child<k>::mapped_index>();\n-163 }\n-164\n-166\n-169 template<std::size_t k,\n-170 typename std::enable_if<lazy_enable<k>::value, int>::type = 0>\n-_\b1_\b7_\b1 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {})\n-172 {\n-173 return _node->template childStorage<Child<k>::mapped_index>();\n-174 }\n-175\n-177\n-180 template<std::size_t k>\n-_\b1_\b8_\b1 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {}) const\n-182 {\n-183 return _node->template childStorage<Child<k>::mapped_index>();\n-184 }\n-185\n-187 template<std::size_t k, class ChildType>\n-_\b1_\b8_\b8 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (ChildType&& _\bc_\bh_\bi_\bl_\bd, typename std::enable_if<lazy_enable<k>::\n-value,void*>::type = 0)\n-189 {\n-190 _node->template setChild<Child<k>::mapped_index>(std::forward<ChildType>\n-(_\bc_\bh_\bi_\bl_\bd));\n-191 }\n-192\n-194\n-197\n-198 protected:\n-199\n-201\n-204 template<bool enabled = !nodeIsConst>\n-205 typename std::enable_if<enabled,Node&>::type\n-_\b2_\b0_\b6 _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd ()\n-207 {\n-208 return *_node;\n-209 }\n-210\n-212\n-_\b2_\b1_\b5 const Node& _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd () const\n-216 {\n-217 return *_node;\n-218 }\n-219\n-221\n-224 template<bool enabled = !nodeIsConst>\n-225 typename std::enable_if<enabled,std::shared_ptr<Node> >::type\n-_\b2_\b2_\b6 _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be ()\n-227 {\n-228 return _node;\n-229 }\n-230\n-232\n-_\b2_\b3_\b5 std::shared_ptr<const Node> _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-236 {\n-237 return _node;\n-238 }\n-239\n-241\n-242 public:\n-243\n-246\n-_\b2_\b4_\b8 _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (std::shared_ptr<Node> node)\n-249 : _node(std::move(node))\n-250 {}\n-251\n-_\b2_\b5_\b3 _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (Node& node)\n-254 : _node(stackobject_to_shared_ptr(node))\n-255 {}\n-256\n-258\n-259 private:\n-260 std::shared_ptr<Node> _node;\n-261 };\n-262\n-264\n-265 } // namespace TypeTree\n-266} //namespace Dune\n-267\n-268#endif // DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n+_\b4_\b2 typedef _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+43\n+_\b4_\b4 static constexpr auto _\bd_\be_\bg_\br_\be_\be()\n+45 {\n+46 return std::integral_constant<std::size_t,0>{};\n+47 }\n+48\n+49 protected:\n+50\n+52\n+_\b5_\b7 _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be() {}\n+58 };\n+59\n+61\n+62 } // namespace TypeTree\n+63} //namespace Dune\n+64\n+65#endif // DUNE_TYPETREE_POWERNODE_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-Base class for composite nodes representing a filtered view on an underlying\n-composite node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(index_constant< k >={}) const\n-Returns the storage of the k-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-static constexpr auto degree()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-mapped_children::NodeStorage NodeStorage\n-The type used for storing the children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(ChildType &&child, typename std::enable_if< lazy_enable< k >::\n-value, void * >::type=0)\n-Sets the k-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+Base class for leaf nodes in a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+LeafNodeTag NodeTag\n+The type tag that describes a LeafNode.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n static const bool isLeaf\n-Mark this class as non leaf in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd\n-const Node & unfiltered() const\n-Returns the unfiltered node (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:215\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::enable_if< enabled, std::shared_ptr< Node > >::type unfilteredStorage()\n-Returns the storage object of the unfiltered node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+Mark this class as a leaf in a dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n static const bool isPower\n Mark this class as a non power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-FilteredCompositeNode(Node &node)\n-Initialize the CompositeNode with a copy of the passed-in storage type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n-FilteredCompositeNode(std::shared_ptr< Node > node)\n-Initialize the CompositeNode with copies of the passed in Storage objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-auto childStorage(index_constant< k >={})\n-Returns the storage of the k-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const auto & child(index_constant< k >={}) const\n-Returns the k-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-auto & child(index_constant< k >={})\n-Returns the k-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-CompositeNodeTag NodeTag\n-The type tag that describes a CompositeNode.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n-mapped_children::ChildTypes ChildTypes\n-A tuple storing the types of all children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd\n-std::enable_if< enabled, Node & >::type unfiltered()\n-Returns the unfiltered node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::shared_ptr< const Node > unfilteredStorage() const\n-Returns the storage object of the unfiltered node (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:235\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-Access to the type and storage type of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n-OriginalChild::type type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n-OriginalChild::Type Type\n-The type of the child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a composite node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n+LeafNode()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a non composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static constexpr auto degree()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafnode.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a leaf node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00074.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00074.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: filters.hh File Reference</title>\n+<title>dune-typetree: visitor.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,70 +71,109 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">filters.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#func-members\">Functions</a> |\n+<a href=\"#var-members\">Variables</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">visitor.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <tuple></code><br />\n-<code>#include <dune/common/typetraits.hh></code><br />\n+<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code><br />\n+<code>#include <dune/common/hybridutilities.hh></code><br />\n </div>\n <p><a href=\"a00074_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01104.html\">Dune::TypeTree::FilterEntry< new_k, old_k ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">A filter entry describing the mapping of one child in the filtered node. <a href=\"a01104.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01560.html\">Dune::TypeTree::DefaultVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> visitors. <a href=\"a01560.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01108.html\">Dune::TypeTree::FilterResult< FilterEntries ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The result of a filter. <a href=\"a01108.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01564.html\">Dune::TypeTree::DefaultPairVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Visitor interface and base class for visitors of pairs of TypeTrees. <a href=\"a01564.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01112.html\">Dune::TypeTree::FilterResult< FilterEntries >::apply< Node ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01568.html\">Dune::TypeTree::Experimental::DefaultHybridVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Hybrid visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> hybrid visitors. <a href=\"a01568.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01116.html\">Dune::TypeTree::SimpleFilterTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag describing a simple filter that can only decide whether or not to include a single given child. <a href=\"a01116.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01572.html\">Dune::TypeTree::VisitDirectChildren</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that only want to visit the direct children of a node. <a href=\"a01572.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01120.html\">Dune::TypeTree::AdvancedFilterTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Tag describing an advanced filter that has full control over the construction of the list of FilterEntries. <a href=\"a01120.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01576.html\">Dune::TypeTree::VisitDirectChildren::VisitChild< Node1, Child1, Node2, Child2, TreePath ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01576.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01124.html\">Dune::TypeTree::AdvancedFilter</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for advanced filters. <a href=\"a01124.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01580.html\">Dune::TypeTree::VisitTree</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that want to visit the complete tree. <a href=\"a01580.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01128.html\">Dune::TypeTree::AdvancedFilter::apply< Node, Children ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply this filter to the given node and children. <a href=\"a01128.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01584.html\">Dune::TypeTree::VisitTree::VisitChild< Node1, Child1, Node2, Child2, TreePath ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01584.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01132.html\">Dune::TypeTree::SimpleFilter</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Default simple filter that accepts any node and leaves its child structure unchanged. <a href=\"a01132.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01588.html\">Dune::TypeTree::StaticTraversal</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that require a static TreePath during traversal. <a href=\"a01588.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01136.html\">Dune::TypeTree::SimpleFilter::validate< Node ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Validates the combination of filter and node. <a href=\"a01136.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01592.html\">Dune::TypeTree::DynamicTraversal</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin base class for visitors that only need a dynamic TreePath during traversal. <a href=\"a01592.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01140.html\">Dune::TypeTree::SimpleFilter::apply< Child, new_index, old_index ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Applies the filter to the given child node. <a href=\"a01140.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01596.html\">Dune::TypeTree::TreeVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the entire tree. <a href=\"a01596.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01160.html\">Dune::TypeTree::IndexFilter< indices ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Filter class for <a class=\"el\" href=\"a01092.html\" title=\"Base class for composite nodes representing a filtered view on an underlying composite node.\">FilteredCompositeNode</a> that selects the children with the given indices. <a href=\"a01160.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01600.html\">Dune::TypeTree::DirectChildrenVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the direct children of a node. <a href=\"a01600.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01180.html\">Dune::TypeTree::filter< Filter ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Adapter class that takes a <a class=\"el\" href=\"a01132.html\" title=\"Default simple filter that accepts any node and leaves its child structure unchanged.\">SimpleFilter</a>, validated it and turns it into an <a class=\"el\" href=\"a01124.html\" title=\"Base class for advanced filters.\">AdvancedFilter</a>. <a href=\"a01180.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01604.html\">Dune::TypeTree::TreePairVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting an entire tree pair. <a href=\"a01604.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01184.html\">Dune::TypeTree::filter< Filter >::apply< Node, Children ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply the filter. <a href=\"a01184.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01608.html\">Dune::TypeTree::DirectChildrenPairVisitor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Convenience base class for visiting the direct children of a node pair. <a href=\"a01608.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01612.html\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01616.html\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01620.html\">Dune::TypeTree::Experimental::Info::DepthVisitor</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00099\" id=\"r_a00099\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00099.html\">Dune::TypeTree::Experimental</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a00108\" id=\"r_a00108\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html\">Dune::TypeTree::Experimental::Info</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a7ab47599182e64eb1cfc8d73ccf87c3c\" id=\"r_a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n+<tr class=\"memitem:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\">Dune::TypeTree::Experimental::Info::depth</a> (const Tree &tree)</td></tr>\n+<tr class=\"memdesc:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The depth of the <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n+<tr class=\"separator:a7ab47599182e64eb1cfc8d73ccf87c3c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a769c643bdde5a9a73adf45d96fec1d6b\" id=\"r_a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n+<tr class=\"memitem:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">Dune::TypeTree::Experimental::Info::depth</a> ()</td></tr>\n+<tr class=\"memdesc:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The depth of the Tree. <br /></td></tr>\n+<tr class=\"separator:a769c643bdde5a9a73adf45d96fec1d6b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a5785c6c18fde92f5bff32c3096f8a00d\" id=\"r_a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n+<tr class=\"memitem:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a> (const Tree &tree)</td></tr>\n+<tr class=\"memdesc:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The total number of nodes in the Tree. <br /></td></tr>\n+<tr class=\"separator:a5785c6c18fde92f5bff32c3096f8a00d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:a53a6ba5f914d4da3ba5ff80408f21163\" id=\"r_a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n+<tr class=\"memitem:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a> (const Tree &tree)</td></tr>\n+<tr class=\"memdesc:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The number of leaf nodes in the Tree. <br /></td></tr>\n+<tr class=\"separator:a53a6ba5f914d4da3ba5ff80408f21163\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\n+Variables</h2></td></tr>\n+<tr class=\"memitem:a104fe96df2b6e08ed3f71b6aff53fb5c\" id=\"r_a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree > </td></tr>\n+<tr class=\"memitem:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr bool </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">Dune::TypeTree::Experimental::Info::isDynamic</a> = std::is_same<std::size_t, decltype(<a class=\"el\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a>(std::declval<Tree>()))>{}</td></tr>\n+<tr class=\"memdesc:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">true if any of the nodes in the tree only has dynamic degree. <br /></td></tr>\n+<tr class=\"separator:a104fe96df2b6e08ed3f71b6aff53fb5c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,63 +1,106 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-filters.hh File Reference\n-#include <tuple>\n-#include <dune/common/typetraits.hh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n+visitor.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+#include <dune/common/hybridutilities.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by_\b<_\b _\bn_\be_\bw_\b__\bk_\b,_\b _\bo_\bl_\bd_\b__\bk_\b _\b>\n-\u00a0 A filter entry describing the mapping of one child in the filtered\n- node. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Visitor interface and base class for _\bT_\by_\bp_\be_\bT_\br_\be_\be visitors. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\bi_\be_\bs_\b _\b>\n-\u00a0 The result of a filter. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Visitor interface and base class for visitors of pairs of TypeTrees.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\bi_\be_\bs_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Hybrid visitor interface and base class for _\bT_\by_\bp_\be_\bT_\br_\be_\be hybrid visitors.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-\u00a0 Tag describing a simple filter that can only decide whether or not to\n- include a single given child. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+\u00a0 Mixin base class for visitors that only want to visit the direct\n+ children of a node. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-\u00a0 Tag describing an advanced filter that has full control over the\n- construction of the list of FilterEntries. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bN_\bo_\bd_\be_\b1_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b1_\b,_\b _\bN_\bo_\bd_\be_\b2_\b,\n+ _\bC_\bh_\bi_\bl_\bd_\b2_\b,_\b _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b _\b>\n+\u00a0 Template struct for determining whether or not to visit a given child.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n-\u00a0 Base class for advanced filters. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+\u00a0 Mixin base class for visitors that want to visit the complete tree.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n-\u00a0 Apply this filter to the given node and children. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bN_\bo_\bd_\be_\b1_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b1_\b,_\b _\bN_\bo_\bd_\be_\b2_\b,_\b _\bC_\bh_\bi_\bl_\bd_\b2_\b,\n+ _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\b _\b>\n+\u00a0 Template struct for determining whether or not to visit a given child.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n-\u00a0 Default simple filter that accepts any node and leaves its child\n- structure unchanged. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+\u00a0 Mixin base class for visitors that require a static TreePath during\n+ traversal. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n-\u00a0 Validates the combination of filter and node. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+\u00a0 Mixin base class for visitors that only need a dynamic TreePath during\n+ traversal. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bC_\bh_\bi_\bl_\bd_\b,_\b _\bn_\be_\bw_\b__\bi_\bn_\bd_\be_\bx_\b,_\b _\bo_\bl_\bd_\b__\bi_\bn_\bd_\be_\bx_\b _\b>\n-\u00a0 Applies the filter to the given child node. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Convenience base class for visiting the entire tree. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bi_\bn_\bd_\bi_\bc_\be_\bs_\b _\b>\n-\u00a0 Filter class for _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be that selects the children with\n- the given indices. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Convenience base class for visiting the direct children of a node.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>\n-\u00a0 Adapter class that takes a _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br, validated it and turns it\n- into an _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Convenience base class for visiting an entire tree pair. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b<_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b _\b>\n-\u00a0 Apply the filter. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0 Convenience base class for visiting the direct children of a node\n+ pair. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename Tree >\n+ auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh (const Tree &tree)\n+\u00a0 The depth of the _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n+\u00a0\n+template<typename Tree >\n+constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh ()\n+\u00a0 The depth of the Tree.\n+\u00a0\n+template<typename Tree >\n+ auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt (const Tree\n+ &tree)\n+\u00a0 The total number of nodes in the Tree.\n+\u00a0\n+template<typename Tree >\n+ auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt (const Tree\n+ &tree)\n+\u00a0 The number of leaf nodes in the Tree.\n+\u00a0\n+V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n+template<typename Tree >\n+constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc = std::\n+ is_same<std::size_t, decltype(_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt(std::declval<Tree>()))>\n+ {}\n+\u00a0 true if any of the nodes in the tree only has dynamic degree.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00074_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00074_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: filters.hh Source File</title>\n+<title>dune-typetree: visitor.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,261 +74,385 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">filters.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">visitor.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00074.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FILTERS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FILTERS_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_VISITOR_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_VISITOR_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <tuple></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> new_k, std::<span class=\"keywordtype\">size_t</span> old_k></div>\n-<div class=\"foldopen\" id=\"foldopen00023\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01104.html\"> 23</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01104.html\">FilterEntry</a></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> {</div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"comment\">// The precise contents of this class is an implementation detail.</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t filtered_index = new_k;</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t original_index = old_k;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html\"> 39</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\"> 42</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t <a class=\"code hl_variable\" href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\">size</a> = <span class=\"keyword\">sizeof</span>...(FilterEntries);</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\"> 44</a></span> <span class=\"keyword\">typedef</span> std::tuple<FilterEntries...> <a class=\"code hl_typedef\" href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\">IndexMap</a>;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html\"> 47</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01112.html\">apply</a></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\"> 49</a></span> <span class=\"keyword\">typedef</span> std::tuple<typename Node::template Child<FilterEntries::original_index>...> <a class=\"code hl_typedef\" href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\">Children</a>;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\"> 50</a></span> <span class=\"keyword\">typedef</span> std::tuple<typename Node::template Child<FilterEntries::original_index>::Type...> <a class=\"code hl_typedef\" href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\">ChildTypes</a>;</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\"> 51</a></span> <span class=\"keyword\">typedef</span> std::tuple<std::shared_ptr<typename Node::template Child<FilterEntries::original_index>::Type>...> <a class=\"code hl_typedef\" href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01116.html\"> 57</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01116.html\">SimpleFilterTag</a> {};</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01120.html\"> 60</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01120.html\">AdvancedFilterTag</a> {};</div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00062.html\">dune/typetree/treepath.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span> </div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html\"> 48</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\"> 60</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\">pre</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00064\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01124.html\"> 64</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01124.html\">AdvancedFilter</a></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> {</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\"> 68</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01120.html\">AdvancedFilterTag</a> <a class=\"code hl_typedef\" href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\">FilterTag</a>;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n-<div class=\"foldopen\" id=\"foldopen00074\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01128.html\"> 74</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01128.html\">apply</a></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> {</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\"> 80</a></span> <span class=\"keyword\">typedef</span> implementation-defined <a class=\"code hl_typedef\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\"> 72</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\">in</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\"> 83</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\">post</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> };</div>\n-</div>\n <div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01132.html\"> 93</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01132.html\">SimpleFilter</a></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> {</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\"> 97</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01116.html\">SimpleFilterTag</a> <a class=\"code hl_typedef\" href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\">FilterTag</a>;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n-<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01136.html\"> 102</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01136.html\">validate</a></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> {</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\"> 105</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\">value</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Child, std::<span class=\"keywordtype\">size_t</span> new_index, std::<span class=\"keywordtype\">size_t</span> old_index></div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01140.html\"> 118</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01140.html\">apply</a></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> {</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\"> 121</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\">value</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> };</div>\n-</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\"> 93</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\">leaf</a>(T&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\"> 107</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\">beforeChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\"> 122</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\">afterChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n <div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n <div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> };</div>\n </div>\n <div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> <span class=\"comment\">// IndexFilter helpers</span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t new_index, std::size_t... indices></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">struct </span>index_filter_helper</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> {</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> {</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a><FilterEntries...> type;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> };</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> };</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, std::size_t new_index, std::size_t old_index, std::size_t... indices></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">struct </span>index_filter_helper<Node,new_index,old_index,indices...></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> {</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterEntries></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> : <span class=\"keyword\">public</span> index_filter_helper<Node,new_index+1,indices...>::template apply<FilterEntries...,</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> FilterEntry<new_index,</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> old_index></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> ></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {};</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> };</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"keyword\">template</span><std::size_t... indices></div>\n-<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01160.html\"> 159</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01160.html\">IndexFilter</a></div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01124.html\">AdvancedFilter</a></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01128.html\">apply</a></div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> index_filter_helper<Node,0,indices...>::template <a class=\"code hl_struct\" href=\"a01128.html\">apply<>::type</a> <a class=\"code hl_typedef\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> };</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"comment\">// filter: Wrapper class for turning a simple filter into an advanced filter</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> <span class=\"comment\">// usable by FilteredCompositeNode</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> </div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, std::size_t new_k, std::size_t old_k, <span class=\"keyword\">typename</span>... tail></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keyword\">struct </span>filter_helper</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> {</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterDescriptors></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01108.html\">FilterResult</a><FilterDescriptors...> type;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> };</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> };</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00163\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html\"> 163</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> {</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\"> 176</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\">pre</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\"> 189</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\">in</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> </div>\n <div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, std::size_t new_k, std::size_t old_k, <span class=\"keyword\">typename</span> <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <span class=\"keyword\">typename</span>... tail></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keyword\">struct </span>filter_helper<Filter,new_k,old_k,<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>,tail...></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> {</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... FilterDescriptors></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">struct </span>apply</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> : <span class=\"keyword\">public</span> std::conditional<Filter::template apply<child,new_k,old_k>::value,</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> typename filter_helper<Filter,new_k+1,old_k+1,tail...>::template apply<FilterDescriptors...,FilterEntry<new_k,old_k> >,</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> typename filter_helper<Filter,new_k,old_k+1,tail...>::template apply<FilterDescriptors...></div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> >::type</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> {};</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\"> 201</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\">post</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n <div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> };</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n-<div class=\"foldopen\" id=\"foldopen00211\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01180.html\"> 211</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01180.html\">filter</a></div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> {</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n-<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01184.html\"> 216</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01184.html\">apply</a></div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">static_assert</span>((Filter::template validate<Node>::value),<span class=\"stringliteral\">"Invalid simple filter"</span>);</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\"> 221</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter_helper<Filter,0,0,Children...>::template <a class=\"code hl_typedef\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">apply<>::type</a> <a class=\"code hl_typedef\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">type</a>;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FILTERS_HH</span></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> TreePath></div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\"> 216</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\">leaf</a>(T1&&, T2&&, TreePath)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> Child1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> Child2, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\"> 232</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\">beforeChild</a>(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T1, <span class=\"keyword\">typename</span> Child1, <span class=\"keyword\">typename</span> T2, <span class=\"keyword\">typename</span> Child2, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex></div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01564.html#ae58d070f366db82a828982ee6800def1\"> 248</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01564.html#ae58d070f366db82a828982ee6800def1\">afterChild</a>(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)<span class=\"keyword\"> const </span>{}</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> </div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> </div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keyword\">namespace </span>Experimental {</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00285\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html\"> 285</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> {</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\"> 296</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\">pre</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> </div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\"> 306</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\">in</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\"> 316</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\">post</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\"> 326</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\">leaf</a>(T&&, TreePath, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> </div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\"> 336</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\">beforeChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> </div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Child, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> ChildIndex, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\"> 346</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\">afterChild</a>(T&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, <span class=\"keyword\">const</span> U& u)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> u;}</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> </div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> } <span class=\"comment\">// namespace Experimental</span></div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> </div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00357\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01572.html\"> 357</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> {</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> </div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"comment\">// the little trick with the default template arguments</span></div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> <span class=\"comment\">// makes the class usable for both single-tree visitors</span></div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> <span class=\"comment\">// and visitors for pairs of trees</span></div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node1,</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> <span class=\"keyword\">typename</span> Child1,</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span> <span class=\"keyword\">typename</span> Node2,</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">typename</span> Child2 = void,</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">typename</span> TreePath = <span class=\"keywordtype\">void</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00369\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01576.html\"> 369</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01576.html\">VisitChild</a></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> {</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\"> 372</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\">value</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00383\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01580.html\"> 383</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> {</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> </div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> <span class=\"comment\">// the little trick with the default template arguments</span></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> <span class=\"comment\">// makes the class usable for both single-tree visitors</span></div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> <span class=\"comment\">// and visitors for pairs of trees</span></div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node1,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"keyword\">typename</span> Child1,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> <span class=\"keyword\">typename</span> Node2,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> <span class=\"keyword\">typename</span> Child2 = void,</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> <span class=\"keyword\">typename</span> TreePath = <span class=\"keywordtype\">void</span>></div>\n+<div class=\"foldopen\" id=\"foldopen00395\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01584.html\"> 395</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01584.html\">VisitChild</a></div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> {</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\"> 398</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\">value</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\"> 400</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> </div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00411\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01588.html\"> 411</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> {</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\"> 414</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">TreePathType::fullyStatic</a>;</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> </div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00425\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01592.html\"> 425</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01592.html\">DynamicTraversal</a></div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> {</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\"> 428</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>;</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00432\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01596.html\"> 432</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01596.html\">TreeVisitor</a></div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00438\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01600.html\"> 438</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01600.html\">DirectChildrenVisitor</a></div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01560.html\">DefaultVisitor</a></div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00444\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01604.html\"> 444</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01604.html\">TreePairVisitor</a></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00450\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01608.html\"> 450</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01608.html\">DirectChildrenPairVisitor</a></div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01564.html\">DefaultPairVisitor</a></div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01572.html\">VisitDirectChildren</a></div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"> 454</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00455\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html\"> 455</a></span> <span class=\"keyword\">namespace </span>Experimental::Info {</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\"> 456</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html\"> 457</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a></div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"> 458</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\"> 459</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\"> 460</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> {</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> Child, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> ChildIndex, <span class=\"keyword\">class</span> U></div>\n+<div class=\"foldopen\" id=\"foldopen00463\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#a951b73b10a172078636131da559989d2\"> 463</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01612.html#a951b73b10a172078636131da559989d2\">beforeChild</a>(Tree&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, ChildIndex, U u)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"comment\">// in this case child index is an integral constant: forward u</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keywordflow\">return</span> u;</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> </div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> Child, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n+<div class=\"foldopen\" id=\"foldopen00469\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\"> 469</a></span> std::size_t <a class=\"code hl_function\" href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\">beforeChild</a>(Tree&&, <a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>&&, TreePath, std::size_t <span class=\"comment\">/*childIndex*/</span>, U u)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"comment\">// in this case child index is a run-time index: cast accumulated u to std::size_t</span></div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> <span class=\"keywordflow\">return</span> std::size_t{u};</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\"> 473</span> </div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n+<div class=\"foldopen\" id=\"foldopen00475\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\"> 475</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\">leaf</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"> 476</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\"> 477</span> <span class=\"keywordflow\">return</span> Hybrid::plus(u,Dune::Indices::_1);</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"> 478</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"> 479</span> </div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\"> 480</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\"> 481</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00482\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01616.html\"> 482</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01616.html\">NodeCounterVisitor</a></div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\"> 483</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a></div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"> 484</span> {</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> TreePath, <span class=\"keyword\">typename</span> U></div>\n+<div class=\"foldopen\" id=\"foldopen00486\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\"> 486</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\">pre</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> <span class=\"keywordflow\">return</span> Hybrid::plus(u,Indices::_1);</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00491\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01620.html\"> 491</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a></div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\"> 492</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01568.html\">DefaultHybridVisitor</a></div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01588.html\">StaticTraversal</a></div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"> 494</span> , <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01580.html\">VisitTree</a></div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"> 495</span> {</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\"> 496</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> U></div>\n+<div class=\"foldopen\" id=\"foldopen00497\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\"> 497</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\">leaf</a>(Tree&&, TreePath, U u)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"> 498</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> <span class=\"keyword\">auto</span> path_size = index_constant<<a class=\"code hl_function\" href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">treePathSize</a>(TreePath{})>{};</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"> 500</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a> = Hybrid::plus(path_size,Indices::_1);</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"> 501</span> <span class=\"keywordflow\">return</span> Hybrid::max(<a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>,u);</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\"> 503</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> </div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> <span class=\"comment\">// result is alwayas an integral constant</span></div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n+<div class=\"foldopen\" id=\"foldopen00508\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a7ab47599182e64eb1cfc8d73ccf87c3c\"> 508</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> {</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"> 510</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a>{},Indices::_0);</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"> 512</span> </div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> <span class=\"comment\">// return types is std::integral_constant.</span></div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n+<div class=\"foldopen\" id=\"foldopen00516\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\"> 516</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">depth</a>()</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> {</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(std::declval<Tree>(),<a class=\"code hl_struct\" href=\"a01620.html\">DepthVisitor</a>{},Indices::_0)){};</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> </div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> <span class=\"comment\">// if Tree is dynamic, return type is std::size_t, otherwise std::integral_constant.</span></div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n+<div class=\"foldopen\" id=\"foldopen00524\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\"> 524</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">nodeCount</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\"> 525</span> {</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01616.html\">NodeCounterVisitor</a>{},Indices::_0);</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"> 527</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> </div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"> 530</span> <span class=\"comment\">// if Tree is dynamic, return type is std::size_t, otherwise std::integral_constant.</span></div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"> 531</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n+<div class=\"foldopen\" id=\"foldopen00532\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\"> 532</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">leafCount</a>(<span class=\"keyword\">const</span> Tree& tree)</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"> 533</span> {</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"> 534</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">hybridApplyToTree</a>(tree,<a class=\"code hl_struct\" href=\"a01612.html\">LeafCounterVisitor</a>{},Dune::Indices::_0);</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"> 535</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"> 536</span> </div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree></div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\"> 539</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">isDynamic</a> = std::is_same<std::size_t, decltype(leafCount(std::declval<Tree>()))>{};</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\"> 540</span> </div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"> 541</span> } <span class=\"comment\">// namespace Experimental::Info</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> </div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> </div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\"> 545</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"> 546</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\"> 547</span> </div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"> 548</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_VISITOR_HH</span></div>\n+<div class=\"ttc\" id=\"aa00062_html\"><div class=\"ttname\"><a href=\"a00062.html\">treepath.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n+<div class=\"ttc\" id=\"aa00093_html_ga15a231b783d71e9daa350133a71b2b53\"><div class=\"ttname\"><a href=\"a00093.html#ga15a231b783d71e9daa350133a71b2b53\">Dune::TypeTree::treePathSize</a></div><div class=\"ttdeci\">constexpr std::size_t treePathSize(const HybridTreePath< T... > &)</div><div class=\"ttdoc\">Returns the size (number of components) of the given HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:334</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01104_html\"><div class=\"ttname\"><a href=\"a01104.html\">Dune::TypeTree::FilterEntry</a></div><div class=\"ttdoc\">A filter entry describing the mapping of one child in the filtered node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:24</div></div>\n-<div class=\"ttc\" id=\"aa01108_html\"><div class=\"ttname\"><a href=\"a01108.html\">Dune::TypeTree::FilterResult</a></div><div class=\"ttdoc\">The result of a filter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:40</div></div>\n-<div class=\"ttc\" id=\"aa01108_html_a4a8e3649ff2e1c91ec7944dd1ea460d5\"><div class=\"ttname\"><a href=\"a01108.html#a4a8e3649ff2e1c91ec7944dd1ea460d5\">Dune::TypeTree::FilterResult::IndexMap</a></div><div class=\"ttdeci\">std::tuple< FilterEntries... > IndexMap</div><div class=\"ttdef\"><b>Definition</b> filters.hh:44</div></div>\n-<div class=\"ttc\" id=\"aa01108_html_af0d63cc663fd5c6c47c6c8f3dce247bf\"><div class=\"ttname\"><a href=\"a01108.html#af0d63cc663fd5c6c47c6c8f3dce247bf\">Dune::TypeTree::FilterResult::size</a></div><div class=\"ttdeci\">static const std::size_t size</div><div class=\"ttdef\"><b>Definition</b> filters.hh:42</div></div>\n-<div class=\"ttc\" id=\"aa01112_html\"><div class=\"ttname\"><a href=\"a01112.html\">Dune::TypeTree::FilterResult::apply</a></div><div class=\"ttdef\"><b>Definition</b> filters.hh:48</div></div>\n-<div class=\"ttc\" id=\"aa01112_html_a39b9a66f186fdd286f5c12838c2c811b\"><div class=\"ttname\"><a href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\">Dune::TypeTree::FilterResult::apply::Children</a></div><div class=\"ttdeci\">std::tuple< typename Node::template Child< FilterEntries::original_index >... > Children</div><div class=\"ttdef\"><b>Definition</b> filters.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa01112_html_ae1aa70004391c42ab3be2b7163ed0d0f\"><div class=\"ttname\"><a href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\">Dune::TypeTree::FilterResult::apply::ChildTypes</a></div><div class=\"ttdeci\">std::tuple< typename Node::template Child< FilterEntries::original_index >::Type... > ChildTypes</div><div class=\"ttdef\"><b>Definition</b> filters.hh:50</div></div>\n-<div class=\"ttc\" id=\"aa01112_html_ae684495ec8a65a094065d41c64ff841e\"><div class=\"ttname\"><a href=\"a01112.html#ae684495ec8a65a094065d41c64ff841e\">Dune::TypeTree::FilterResult::apply::NodeStorage</a></div><div class=\"ttdeci\">std::tuple< std::shared_ptr< typename Node::template Child< FilterEntries::original_index >::Type >... > NodeStorage</div><div class=\"ttdef\"><b>Definition</b> filters.hh:51</div></div>\n-<div class=\"ttc\" id=\"aa01116_html\"><div class=\"ttname\"><a href=\"a01116.html\">Dune::TypeTree::SimpleFilterTag</a></div><div class=\"ttdoc\">Tag describing a simple filter that can only decide whether or not to include a single given child.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:57</div></div>\n-<div class=\"ttc\" id=\"aa01120_html\"><div class=\"ttname\"><a href=\"a01120.html\">Dune::TypeTree::AdvancedFilterTag</a></div><div class=\"ttdoc\">Tag describing an advanced filter that has full control over the construction of the list of FilterEn...</div><div class=\"ttdef\"><b>Definition</b> filters.hh:60</div></div>\n-<div class=\"ttc\" id=\"aa01124_html\"><div class=\"ttname\"><a href=\"a01124.html\">Dune::TypeTree::AdvancedFilter</a></div><div class=\"ttdoc\">Base class for advanced filters.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:65</div></div>\n-<div class=\"ttc\" id=\"aa01124_html_a4fd8c754cfcb1eb9eedf19dd8710db94\"><div class=\"ttname\"><a href=\"a01124.html#a4fd8c754cfcb1eb9eedf19dd8710db94\">Dune::TypeTree::AdvancedFilter::FilterTag</a></div><div class=\"ttdeci\">AdvancedFilterTag FilterTag</div><div class=\"ttdoc\">Filter tag for deciding on filter application mechanism.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:68</div></div>\n-<div class=\"ttc\" id=\"aa01128_html\"><div class=\"ttname\"><a href=\"a01128.html\">Dune::TypeTree::AdvancedFilter::apply</a></div><div class=\"ttdoc\">Apply this filter to the given node and children.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:75</div></div>\n-<div class=\"ttc\" id=\"aa01128_html_a034c4aa57e11832b7ca8fd75ae511ec3\"><div class=\"ttname\"><a href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">Dune::TypeTree::AdvancedFilter::apply::type</a></div><div class=\"ttdeci\">implementation defined type</div><div class=\"ttdoc\">The result of the filtering process.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:80</div></div>\n-<div class=\"ttc\" id=\"aa01132_html\"><div class=\"ttname\"><a href=\"a01132.html\">Dune::TypeTree::SimpleFilter</a></div><div class=\"ttdoc\">Default simple filter that accepts any node and leaves its child structure unchanged.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:94</div></div>\n-<div class=\"ttc\" id=\"aa01132_html_ae67f1c40828cfb2622d0a9bac6737410\"><div class=\"ttname\"><a href=\"a01132.html#ae67f1c40828cfb2622d0a9bac6737410\">Dune::TypeTree::SimpleFilter::FilterTag</a></div><div class=\"ttdeci\">SimpleFilterTag FilterTag</div><div class=\"ttdoc\">Filter tag for deciding on filter application mechanism.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:97</div></div>\n-<div class=\"ttc\" id=\"aa01136_html\"><div class=\"ttname\"><a href=\"a01136.html\">Dune::TypeTree::SimpleFilter::validate</a></div><div class=\"ttdoc\">Validates the combination of filter and node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:103</div></div>\n-<div class=\"ttc\" id=\"aa01136_html_a5c66acd334e0cb097ee1c4f652ed6139\"><div class=\"ttname\"><a href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\">Dune::TypeTree::SimpleFilter::validate::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">True if the combination of filter and node is valid.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:105</div></div>\n-<div class=\"ttc\" id=\"aa01140_html\"><div class=\"ttname\"><a href=\"a01140.html\">Dune::TypeTree::SimpleFilter::apply</a></div><div class=\"ttdoc\">Applies the filter to the given child node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:119</div></div>\n-<div class=\"ttc\" id=\"aa01140_html_a1898f545f2bf84b28e34415c00276770\"><div class=\"ttname\"><a href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\">Dune::TypeTree::SimpleFilter::apply::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">True if the child will be included in the filtered node.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:121</div></div>\n-<div class=\"ttc\" id=\"aa01160_html\"><div class=\"ttname\"><a href=\"a01160.html\">Dune::TypeTree::IndexFilter</a></div><div class=\"ttdoc\">Filter class for FilteredCompositeNode that selects the children with the given indices.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:161</div></div>\n-<div class=\"ttc\" id=\"aa01180_html\"><div class=\"ttname\"><a href=\"a01180.html\">Dune::TypeTree::filter</a></div><div class=\"ttdoc\">Adapter class that takes a SimpleFilter, validated it and turns it into an AdvancedFilter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:212</div></div>\n-<div class=\"ttc\" id=\"aa01184_html\"><div class=\"ttname\"><a href=\"a01184.html\">Dune::TypeTree::filter::apply</a></div><div class=\"ttdoc\">Apply the filter.</div><div class=\"ttdef\"><b>Definition</b> filters.hh:217</div></div>\n-<div class=\"ttc\" id=\"aa01184_html_ac0c6d8d73084c07bc88660811465a8d4\"><div class=\"ttname\"><a href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">Dune::TypeTree::filter::apply::type</a></div><div class=\"ttdeci\">filter_helper< Filter, 0, 0, Children... >::template apply ::type type</div><div class=\"ttdef\"><b>Definition</b> filters.hh:221</div></div>\n+<div class=\"ttc\" id=\"aa00099_html_a470e7e00fc4aa26e0bf46ea22a8cf2e2\"><div class=\"ttname\"><a href=\"a00099.html#a470e7e00fc4aa26e0bf46ea22a8cf2e2\">Dune::TypeTree::Experimental::hybridApplyToTree</a></div><div class=\"ttdeci\">auto hybridApplyToTree(Tree &&tree, Visitor &&visitor, Init &&init)</div><div class=\"ttdoc\">Apply hybrid visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:701</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093cea9a0cbcf7ee58f560a6c87edbbad79635\">Dune::TypeTree::TreePathType::fullyStatic</a></div><div class=\"ttdeci\">@ fullyStatic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a104fe96df2b6e08ed3f71b6aff53fb5c\"><div class=\"ttname\"><a href=\"a00108.html#a104fe96df2b6e08ed3f71b6aff53fb5c\">Dune::TypeTree::Experimental::Info::isDynamic</a></div><div class=\"ttdeci\">constexpr bool isDynamic</div><div class=\"ttdoc\">true if any of the nodes in the tree only has dynamic degree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:539</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a53a6ba5f914d4da3ba5ff80408f21163\"><div class=\"ttname\"><a href=\"a00108.html#a53a6ba5f914d4da3ba5ff80408f21163\">Dune::TypeTree::Experimental::Info::leafCount</a></div><div class=\"ttdeci\">auto leafCount(const Tree &tree)</div><div class=\"ttdoc\">The number of leaf nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:532</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a5785c6c18fde92f5bff32c3096f8a00d\"><div class=\"ttname\"><a href=\"a00108.html#a5785c6c18fde92f5bff32c3096f8a00d\">Dune::TypeTree::Experimental::Info::nodeCount</a></div><div class=\"ttdeci\">auto nodeCount(const Tree &tree)</div><div class=\"ttdoc\">The total number of nodes in the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:524</div></div>\n+<div class=\"ttc\" id=\"aa00108_html_a769c643bdde5a9a73adf45d96fec1d6b\"><div class=\"ttname\"><a href=\"a00108.html#a769c643bdde5a9a73adf45d96fec1d6b\">Dune::TypeTree::Experimental::Info::depth</a></div><div class=\"ttdeci\">constexpr auto depth()</div><div class=\"ttdoc\">The depth of the Tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:516</div></div>\n+<div class=\"ttc\" id=\"aa01560_html\"><div class=\"ttname\"><a href=\"a01560.html\">Dune::TypeTree::DefaultVisitor</a></div><div class=\"ttdoc\">Visitor interface and base class for TypeTree visitors.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:49</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_a29109fa150fe803da9ef96e5545cc34b\"><div class=\"ttname\"><a href=\"a01560.html#a29109fa150fe803da9ef96e5545cc34b\">Dune::TypeTree::DefaultVisitor::in</a></div><div class=\"ttdeci\">void in(T &&, TreePath) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:72</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_a4c3044017e14fba2f79a4985ab051582\"><div class=\"ttname\"><a href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\">Dune::TypeTree::DefaultVisitor::afterChild</a></div><div class=\"ttdeci\">void afterChild(T &&, Child &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:122</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_a6b183fe30f42681326f449b92adee39b\"><div class=\"ttname\"><a href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\">Dune::TypeTree::DefaultVisitor::beforeChild</a></div><div class=\"ttdeci\">void beforeChild(T &&, Child &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:107</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_a7fb17e9b2662028132c2ddd44b4e5177\"><div class=\"ttname\"><a href=\"a01560.html#a7fb17e9b2662028132c2ddd44b4e5177\">Dune::TypeTree::DefaultVisitor::post</a></div><div class=\"ttdeci\">void post(T &&, TreePath) const</div><div class=\"ttdoc\">Method for postfix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_a847720b94c34dc3d367d0b9e70c75aca\"><div class=\"ttname\"><a href=\"a01560.html#a847720b94c34dc3d367d0b9e70c75aca\">Dune::TypeTree::DefaultVisitor::leaf</a></div><div class=\"ttdeci\">void leaf(T &&, TreePath) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:93</div></div>\n+<div class=\"ttc\" id=\"aa01560_html_afc26a0c206c4d9a5721f13c76619b593\"><div class=\"ttname\"><a href=\"a01560.html#afc26a0c206c4d9a5721f13c76619b593\">Dune::TypeTree::DefaultVisitor::pre</a></div><div class=\"ttdeci\">void pre(T &&, TreePath) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:60</div></div>\n+<div class=\"ttc\" id=\"aa01564_html\"><div class=\"ttname\"><a href=\"a01564.html\">Dune::TypeTree::DefaultPairVisitor</a></div><div class=\"ttdoc\">Visitor interface and base class for visitors of pairs of TypeTrees.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:164</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_a16eb112aa01f1f5075afc05bcd1504e3\"><div class=\"ttname\"><a href=\"a01564.html#a16eb112aa01f1f5075afc05bcd1504e3\">Dune::TypeTree::DefaultPairVisitor::leaf</a></div><div class=\"ttdeci\">void leaf(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:216</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_a2c63dc52133fc5dcca0630524b104629\"><div class=\"ttname\"><a href=\"a01564.html#a2c63dc52133fc5dcca0630524b104629\">Dune::TypeTree::DefaultPairVisitor::beforeChild</a></div><div class=\"ttdeci\">void beforeChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:232</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_aa16263024c675121a6d4be9a405e7569\"><div class=\"ttname\"><a href=\"a01564.html#aa16263024c675121a6d4be9a405e7569\">Dune::TypeTree::DefaultPairVisitor::pre</a></div><div class=\"ttdeci\">void pre(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:176</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_ac0a9bb10da4e4e565deb11a1f2cd1ffd\"><div class=\"ttname\"><a href=\"a01564.html#ac0a9bb10da4e4e565deb11a1f2cd1ffd\">Dune::TypeTree::DefaultPairVisitor::post</a></div><div class=\"ttdeci\">void post(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for postfix traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:201</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_acd5a90cd29a33f8b00a32a14e8e6d84a\"><div class=\"ttname\"><a href=\"a01564.html#acd5a90cd29a33f8b00a32a14e8e6d84a\">Dune::TypeTree::DefaultPairVisitor::in</a></div><div class=\"ttdeci\">void in(T1 &&, T2 &&, TreePath) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:189</div></div>\n+<div class=\"ttc\" id=\"aa01564_html_ae58d070f366db82a828982ee6800def1\"><div class=\"ttname\"><a href=\"a01564.html#ae58d070f366db82a828982ee6800def1\">Dune::TypeTree::DefaultPairVisitor::afterChild</a></div><div class=\"ttdeci\">void afterChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:248</div></div>\n+<div class=\"ttc\" id=\"aa01568_html\"><div class=\"ttname\"><a href=\"a01568.html\">Dune::TypeTree::Experimental::DefaultHybridVisitor</a></div><div class=\"ttdoc\">Hybrid visitor interface and base class for TypeTree hybrid visitors.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:286</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_a3ad8af765da2b8bfbba2ba17dc0a9f35\"><div class=\"ttname\"><a href=\"a01568.html#a3ad8af765da2b8bfbba2ba17dc0a9f35\">Dune::TypeTree::Experimental::DefaultHybridVisitor::post</a></div><div class=\"ttdeci\">auto post(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for postfix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:316</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_a858013308d36f3a5167bc87685c8f831\"><div class=\"ttname\"><a href=\"a01568.html#a858013308d36f3a5167bc87685c8f831\">Dune::TypeTree::Experimental::DefaultHybridVisitor::pre</a></div><div class=\"ttdeci\">auto pre(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for prefix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:296</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_a8c9825573648a003ec5ded66a0d3924d\"><div class=\"ttname\"><a href=\"a01568.html#a8c9825573648a003ec5ded66a0d3924d\">Dune::TypeTree::Experimental::DefaultHybridVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for leaf traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:326</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_a9b8fa4073c306094f0029b7ff43845fa\"><div class=\"ttname\"><a href=\"a01568.html#a9b8fa4073c306094f0029b7ff43845fa\">Dune::TypeTree::Experimental::DefaultHybridVisitor::afterChild</a></div><div class=\"ttdeci\">auto afterChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const</div><div class=\"ttdoc\">Method for child-parent traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:346</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_ab492601f1e0118e6d9e81f704a8fb0f4\"><div class=\"ttname\"><a href=\"a01568.html#ab492601f1e0118e6d9e81f704a8fb0f4\">Dune::TypeTree::Experimental::DefaultHybridVisitor::in</a></div><div class=\"ttdeci\">auto in(T &&, TreePath, const U &u) const</div><div class=\"ttdoc\">Method for infix tree traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:306</div></div>\n+<div class=\"ttc\" id=\"aa01568_html_ad702d8a561daf106b779de7f66dea829\"><div class=\"ttname\"><a href=\"a01568.html#ad702d8a561daf106b779de7f66dea829\">Dune::TypeTree::Experimental::DefaultHybridVisitor::beforeChild</a></div><div class=\"ttdeci\">auto beforeChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const</div><div class=\"ttdoc\">Method for parent-child traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:336</div></div>\n+<div class=\"ttc\" id=\"aa01572_html\"><div class=\"ttname\"><a href=\"a01572.html\">Dune::TypeTree::VisitDirectChildren</a></div><div class=\"ttdoc\">Mixin base class for visitors that only want to visit the direct children of a node.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:358</div></div>\n+<div class=\"ttc\" id=\"aa01576_html\"><div class=\"ttname\"><a href=\"a01576.html\">Dune::TypeTree::VisitDirectChildren::VisitChild</a></div><div class=\"ttdoc\">Template struct for determining whether or not to visit a given child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:370</div></div>\n+<div class=\"ttc\" id=\"aa01576_html_a0a8eca77f9c305ce340a43776408de70\"><div class=\"ttname\"><a href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\">Dune::TypeTree::VisitDirectChildren::VisitChild::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">Do not visit any child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:372</div></div>\n+<div class=\"ttc\" id=\"aa01580_html\"><div class=\"ttname\"><a href=\"a01580.html\">Dune::TypeTree::VisitTree</a></div><div class=\"ttdoc\">Mixin base class for visitors that want to visit the complete tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:384</div></div>\n+<div class=\"ttc\" id=\"aa01584_html\"><div class=\"ttname\"><a href=\"a01584.html\">Dune::TypeTree::VisitTree::VisitChild</a></div><div class=\"ttdoc\">Template struct for determining whether or not to visit a given child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:396</div></div>\n+<div class=\"ttc\" id=\"aa01584_html_a133b8eac4c63e87699e8aeab25f59e79\"><div class=\"ttname\"><a href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\">Dune::TypeTree::VisitTree::VisitChild::value</a></div><div class=\"ttdeci\">static const bool value</div><div class=\"ttdoc\">Visit any child.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:398</div></div>\n+<div class=\"ttc\" id=\"aa01588_html\"><div class=\"ttname\"><a href=\"a01588.html\">Dune::TypeTree::StaticTraversal</a></div><div class=\"ttdoc\">Mixin base class for visitors that require a static TreePath during traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:412</div></div>\n+<div class=\"ttc\" id=\"aa01588_html_af5b5b93a9a70f08554680cabd44a83e3\"><div class=\"ttname\"><a href=\"a01588.html#af5b5b93a9a70f08554680cabd44a83e3\">Dune::TypeTree::StaticTraversal::treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdoc\">Use the static tree traversal algorithm.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:414</div></div>\n+<div class=\"ttc\" id=\"aa01592_html\"><div class=\"ttname\"><a href=\"a01592.html\">Dune::TypeTree::DynamicTraversal</a></div><div class=\"ttdoc\">Mixin base class for visitors that only need a dynamic TreePath during traversal.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:426</div></div>\n+<div class=\"ttc\" id=\"aa01592_html_a63dbdad07a75c2f9c92a71333e14515c\"><div class=\"ttname\"><a href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\">Dune::TypeTree::DynamicTraversal::treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdoc\">Use the dynamic tree traversal algorithm.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:428</div></div>\n+<div class=\"ttc\" id=\"aa01596_html\"><div class=\"ttname\"><a href=\"a01596.html\">Dune::TypeTree::TreeVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the entire tree.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:435</div></div>\n+<div class=\"ttc\" id=\"aa01600_html\"><div class=\"ttname\"><a href=\"a01600.html\">Dune::TypeTree::DirectChildrenVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the direct children of a node.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:441</div></div>\n+<div class=\"ttc\" id=\"aa01604_html\"><div class=\"ttname\"><a href=\"a01604.html\">Dune::TypeTree::TreePairVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting an entire tree pair.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:447</div></div>\n+<div class=\"ttc\" id=\"aa01608_html\"><div class=\"ttname\"><a href=\"a01608.html\">Dune::TypeTree::DirectChildrenPairVisitor</a></div><div class=\"ttdoc\">Convenience base class for visiting the direct children of a node pair.</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:453</div></div>\n+<div class=\"ttc\" id=\"aa01612_html\"><div class=\"ttname\"><a href=\"a01612.html\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:461</div></div>\n+<div class=\"ttc\" id=\"aa01612_html_a7ae0f477dbe212c32cdde6ef9d16410d\"><div class=\"ttname\"><a href=\"a01612.html#a7ae0f477dbe212c32cdde6ef9d16410d\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:475</div></div>\n+<div class=\"ttc\" id=\"aa01612_html_a951b73b10a172078636131da559989d2\"><div class=\"ttname\"><a href=\"a01612.html#a951b73b10a172078636131da559989d2\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::beforeChild</a></div><div class=\"ttdeci\">auto beforeChild(Tree &&, Child &&, TreePath, ChildIndex, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:463</div></div>\n+<div class=\"ttc\" id=\"aa01612_html_aff0b0e9c68760bab3becf68c3abd2136\"><div class=\"ttname\"><a href=\"a01612.html#aff0b0e9c68760bab3becf68c3abd2136\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor::beforeChild</a></div><div class=\"ttdeci\">std::size_t beforeChild(Tree &&, Child &&, TreePath, std::size_t, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:469</div></div>\n+<div class=\"ttc\" id=\"aa01616_html\"><div class=\"ttname\"><a href=\"a01616.html\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:484</div></div>\n+<div class=\"ttc\" id=\"aa01616_html_ad96b7d51f95324ef4fa8b6a5e9a77779\"><div class=\"ttname\"><a href=\"a01616.html#ad96b7d51f95324ef4fa8b6a5e9a77779\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor::pre</a></div><div class=\"ttdeci\">auto pre(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:486</div></div>\n+<div class=\"ttc\" id=\"aa01620_html\"><div class=\"ttname\"><a href=\"a01620.html\">Dune::TypeTree::Experimental::Info::DepthVisitor</a></div><div class=\"ttdef\"><b>Definition</b> visitor.hh:495</div></div>\n+<div class=\"ttc\" id=\"aa01620_html_aa4e91c909f8083203b46c6fe18c4c1a8\"><div class=\"ttname\"><a href=\"a01620.html#aa4e91c909f8083203b46c6fe18c4c1a8\">Dune::TypeTree::Experimental::Info::DepthVisitor::leaf</a></div><div class=\"ttdeci\">auto leaf(Tree &&, TreePath, U u) const</div><div class=\"ttdef\"><b>Definition</b> visitor.hh:497</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,320 +1,481 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-filters.hh\n+visitor.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_FILTERS_HH\n-7#define DUNE_TYPETREE_FILTERS_HH\n+6#ifndef DUNE_TYPETREE_VISITOR_HH\n+7#define DUNE_TYPETREE_VISITOR_HH\n 8\n-9#include <tuple>\n-10\n-11#include <dune/common/typetraits.hh>\n-12\n-13namespace _\bD_\bu_\bn_\be {\n-14 namespace TypeTree {\n-15\n-22 template<std::size_t new_k, std::size_t old_k>\n-_\b2_\b3 struct _\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by\n-24 {\n-25\n-26#ifndef DOXYGEN\n-27\n-28 // The precise contents of this class is an implementation detail.\n-29\n-30 static const std::size_t filtered_index = new_k;\n-31 static const std::size_t original_index = old_k;\n-32\n-33#endif // DOXYGEN\n-34\n-35 };\n-36\n-38 template<typename... FilterEntries>\n-_\b3_\b9 struct _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt\n-40 {\n-41\n-_\b4_\b2 static const std::size_t _\bs_\bi_\bz_\be = sizeof...(FilterEntries);\n-43\n-_\b4_\b4 typedef std::tuple<FilterEntries...> _\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp;\n-45\n-46 template<typename Node>\n-_\b4_\b7 struct _\ba_\bp_\bp_\bl_\by\n-48 {\n-_\b4_\b9 typedef std::tuple<typename Node::template Child<FilterEntries::\n-original_index>...> _\bC_\bh_\bi_\bl_\bd_\br_\be_\bn;\n-_\b5_\b0 typedef std::tuple<typename Node::template Child<FilterEntries::\n-original_index>::Type...> _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n-_\b5_\b1 typedef std::tuple<std::shared_ptr<typename Node::template\n-Child<FilterEntries::original_index>::Type>...> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-52 };\n-53\n-54 };\n-55\n-_\b5_\b7 struct _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg {};\n-58\n-_\b6_\b0 struct _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg {};\n+9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n+10#include <dune/common/hybridutilities.hh>\n+11\n+12namespace _\bD_\bu_\bn_\be {\n+13 namespace TypeTree {\n+14\n+21\n+_\b4_\b8 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+49 {\n+50\n+52\n+59 template<typename T, typename TreePath>\n+_\b6_\b0 void _\bp_\br_\be(T&&, TreePath) const {}\n 61\n-62\n-_\b6_\b4 struct _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n-65 {\n-66\n-_\b6_\b8 typedef _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg _\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg;\n-69\n-70#ifdef DOXYGEN\n-71\n-73 template<typename Node, typename... Children>\n-_\b7_\b4 struct _\ba_\bp_\bp_\bl_\by\n-75 {\n-77\n-_\b8_\b0 typedef implementation-defined _\bt_\by_\bp_\be;\n-81 };\n-82\n-83#endif // DOXYGEN\n+63\n+71 template<typename T, typename TreePath>\n+_\b7_\b2 void _\bi_\bn(T&&, TreePath) const {}\n+73\n+75\n+82 template<typename T, typename TreePath>\n+_\b8_\b3 void _\bp_\bo_\bs_\bt(T&&, TreePath) const {}\n 84\n-85 };\n 86\n-88\n-_\b9_\b3 struct _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n-94 {\n-95\n-_\b9_\b7 typedef _\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg _\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg;\n-98\n-99\n-101 template<typename Node>\n-_\b1_\b0_\b2 struct _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be\n-103 {\n-_\b1_\b0_\b5 static const bool _\bv_\ba_\bl_\bu_\be = true;\n-106 };\n-107\n-109\n-117 template<typename Child, std::size_t new_index, std::size_t old_index>\n-_\b1_\b1_\b8 struct _\ba_\bp_\bp_\bl_\by\n-119 {\n-_\b1_\b2_\b1 static const bool _\bv_\ba_\bl_\bu_\be = true;\n-122 };\n+92 template<typename T, typename TreePath>\n+_\b9_\b3 void _\bl_\be_\ba_\bf(T&&, TreePath) const {}\n+94\n+96\n+106 template<typename T, typename Child, typename TreePath, typename\n+ChildIndex>\n+_\b1_\b0_\b7 void _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex) const {}\n+108\n+110\n+121 template<typename T, typename Child, typename TreePath, typename\n+ChildIndex>\n+_\b1_\b2_\b2 void _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex) const {}\n 123\n 124 };\n 125\n-126 namespace {\n-127\n-128 /\n-/\n-********************************************************************************\n-129 // IndexFilter helpers\n-130 /\n-/\n-********************************************************************************\n-131\n-132 template<typename Node, std::size_t new_index, std::size_t... indices>\n-133 struct index_filter_helper\n-134 {\n-135 template<typename... FilterEntries>\n-136 struct apply\n-137 {\n-138 typedef _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt<FilterEntries...> type;\n-139 };\n-140 };\n-141\n-142 template<typename Node, std::size_t new_index, std::size_t old_index, std::\n-size_t... indices>\n-143 struct index_filter_helper<Node,new_index,old_index,indices...>\n-144 {\n-145 template<typename... FilterEntries>\n-146 struct apply\n-147 : public index_filter_helper<Node,new_index+1,indices...>::template\n-apply<FilterEntries...,\n-148 FilterEntry<new_index,\n-149 old_index>\n-150 >\n-151 {};\n-152 };\n-153\n-154 } // anonymous namespace\n-155\n-156\n-158 template<std::size_t... indices>\n-_\b1_\b5_\b9 struct _\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br\n-160 : public _\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n-161 {\n-162\n-163#ifndef DOXYGEN\n-164\n-165 template<typename Node, typename... Children>\n-166 struct _\ba_\bp_\bp_\bl_\by\n-167 {\n-168 typedef typename index_filter_helper<Node,0,indices...>::template _\ba_\bp_\bp_\bl_\by_\b<_\b>_\b:_\b:\n-_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n-169 };\n-170\n-171#endif // DOXYGEN\n-172\n-173 };\n-174\n-175\n-176 /\n-/\n-********************************************************************************\n-177 // filter: Wrapper class for turning a simple filter into an advanced\n-filter\n-178 // usable by FilteredCompositeNode\n-179 /\n-/\n-********************************************************************************\n-180\n-181 namespace {\n-182\n-183 template<typename Filter, std::size_t new_k, std::size_t old_k, typename...\n-tail>\n-184 struct filter_helper\n-185 {\n-186 template<typename... FilterDescriptors>\n-187 struct apply\n-188 {\n-189 typedef _\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt<FilterDescriptors...> type;\n-190 };\n-191 };\n+126\n+128\n+_\b1_\b6_\b3 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+164 {\n+165\n+167\n+175 template<typename T1, typename T2, typename TreePath>\n+_\b1_\b7_\b6 void _\bp_\br_\be(T1&&, T2&&, TreePath) const {}\n+177\n+179\n+188 template<typename T1, typename T2, typename TreePath>\n+_\b1_\b8_\b9 void _\bi_\bn(T1&&, T2&&, TreePath) const {}\n+190\n 192\n-193 template<typename Filter, std::size_t new_k, std::size_t old_k, typename\n-_\bc_\bh_\bi_\bl_\bd, typename... tail>\n-194 struct filter_helper<Filter,new_k,old_k,_\bc_\bh_\bi_\bl_\bd,tail...>\n-195 {\n-196\n-197 template<typename... FilterDescriptors>\n-198 struct apply\n-199 : public std::conditional<Filter::template apply<child,new_k,old_k>::value,\n-200 typename filter_helper<Filter,new_k+1,old_k+1,tail...>::template\n-apply<FilterDescriptors...,FilterEntry<new_k,old_k> >,\n-201 typename filter_helper<Filter,new_k,old_k+1,tail...>::template\n-apply<FilterDescriptors...>\n-202 >::type\n-203 {};\n+200 template<typename T1, typename T2, typename TreePath>\n+_\b2_\b0_\b1 void _\bp_\bo_\bs_\bt(T1&&, T2&&, TreePath) const {}\n+202\n 204\n-205 };\n-206\n-207 } // anonymous namespace\n-208\n-210 template<typename Filter>\n-_\b2_\b1_\b1 struct _\bf_\bi_\bl_\bt_\be_\br\n-212 {\n-213\n-215 template<typename Node, typename... Children>\n-_\b2_\b1_\b6 struct _\ba_\bp_\bp_\bl_\by\n-217 {\n-218\n-219 static_assert((Filter::template validate<Node>::value),\"Invalid simple\n-filter\");\n-220\n-_\b2_\b2_\b1 typedef typename filter_helper<Filter,0,0,Children...>::template _\ba_\bp_\bp_\bl_\by_\b<_\b>_\b:_\b:\n-_\bt_\by_\bp_\be _\bt_\by_\bp_\be;\n-222\n-223 };\n-224\n-225 };\n-226\n-228\n-229 } // namespace TypeTree\n-230} //namespace Dune\n-231\n-232#endif // DUNE_TYPETREE_FILTERS_HH\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n+215 template<typename T1, typename T2, typename TreePath>\n+_\b2_\b1_\b6 void _\bl_\be_\ba_\bf(T1&&, T2&&, TreePath) const {}\n+217\n+219\n+231 template<typename T1, typename Child1, typename T2, typename Child2,\n+typename TreePath, typename ChildIndex>\n+_\b2_\b3_\b2 void _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)\n+const {}\n+233\n+235\n+247 template<typename T1, typename Child1, typename T2, typename Child2,\n+typename TreePath, typename ChildIndex>\n+_\b2_\b4_\b8 void _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex) const\n+{}\n+249\n+250 };\n+251\n+252\n+253 namespace Experimental {\n+254\n+_\b2_\b8_\b5 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+286 {\n+287\n+295 template<typename T, typename TreePath, typename U>\n+_\b2_\b9_\b6 auto _\bp_\br_\be(T&&, TreePath, const U& u) const { return u;}\n+297\n+305 template<typename T, typename TreePath, typename U>\n+_\b3_\b0_\b6 auto _\bi_\bn(T&&, TreePath, const U& u) const {return u;}\n+307\n+315 template<typename T, typename TreePath, typename U>\n+_\b3_\b1_\b6 auto _\bp_\bo_\bs_\bt(T&&, TreePath, const U& u) const {return u;}\n+317\n+325 template<typename T, typename TreePath, typename U>\n+_\b3_\b2_\b6 auto _\bl_\be_\ba_\bf(T&&, TreePath, const U& u) const { return u;}\n+327\n+335 template<typename T, typename Child, typename TreePath, typename\n+ChildIndex, typename U>\n+_\b3_\b3_\b6 auto _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, const U& u) const\n+{return u;}\n+337\n+345 template<typename T, typename Child, typename TreePath, typename\n+ChildIndex, typename U>\n+_\b3_\b4_\b6 auto _\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd(T&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, const U& u) const\n+{return u;}\n+347\n+348 };\n+349 } // namespace Experimental\n+350\n+352\n+_\b3_\b5_\b7 struct _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+358 {\n+359\n+360 // the little trick with the default template arguments\n+361 // makes the class usable for both single-tree visitors\n+362 // and visitors for pairs of trees\n+364 template<typename Node1,\n+365 typename Child1,\n+366 typename Node2,\n+367 typename Child2 = void,\n+368 typename TreePath = void>\n+_\b3_\b6_\b9 struct _\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n+370 {\n+_\b3_\b7_\b2 static const bool _\bv_\ba_\bl_\bu_\be = false;\n+373 };\n+374\n+375 };\n+376\n+377\n+379\n+_\b3_\b8_\b3 struct _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+384 {\n+385\n+386 // the little trick with the default template arguments\n+387 // makes the class usable for both single-tree visitors\n+388 // and visitors for pairs of trees\n+390 template<typename Node1,\n+391 typename Child1,\n+392 typename Node2,\n+393 typename Child2 = void,\n+394 typename TreePath = void>\n+_\b3_\b9_\b5 struct _\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n+396 {\n+_\b3_\b9_\b8 static const bool _\bv_\ba_\bl_\bu_\be = true;\n+399 };\n+400\n+401 };\n+402\n+404\n+_\b4_\b1_\b1 struct _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+412 {\n+_\b4_\b1_\b4 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc;\n+415 };\n+416\n+418\n+_\b4_\b2_\b5 struct _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+426 {\n+_\b4_\b2_\b8 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc;\n+429 };\n+430\n+_\b4_\b3_\b2 struct _\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+433 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+434 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+435 {};\n+436\n+_\b4_\b3_\b8 struct _\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+439 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+440 , public _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+441 {};\n+442\n+_\b4_\b4_\b4 struct _\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+445 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+446 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+447 {};\n+448\n+_\b4_\b5_\b0 struct _\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+451 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+452 , public _\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+453 {};\n+454\n+_\b4_\b5_\b5 namespace Experimental::Info {\n+456\n+_\b4_\b5_\b7 struct _\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+458 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+459 , public _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+460 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+461 {\n+462 template<class Tree, class Child, class TreePath, class ChildIndex, class\n+U>\n+_\b4_\b6_\b3 auto _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(Tree&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, ChildIndex, U u) const {\n+464 // in this case child index is an integral constant: forward u\n+465 return u;\n+466 }\n+467\n+468 template<class Tree, class Child, class TreePath, class U>\n+_\b4_\b6_\b9 std::size_t _\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd(Tree&&, _\bC_\bh_\bi_\bl_\bd&&, TreePath, std::size_t /\n+*childIndex*/, U u) const {\n+470 // in this case child index is a run-time index: cast accumulated u to\n+std::size_t\n+471 return std::size_t{u};\n+472 }\n+473\n+474 template<class Tree, class TreePath, class U>\n+_\b4_\b7_\b5 auto _\bl_\be_\ba_\bf(Tree&&, TreePath, U u) const\n+476 {\n+477 return Hybrid::plus(u,Dune::Indices::_1);\n+478 }\n+479\n+480 };\n+481\n+_\b4_\b8_\b2 struct _\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+483 : public _\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+484 {\n+485 template<typename Tree, typename TreePath, typename U>\n+_\b4_\b8_\b6 auto _\bp_\br_\be(Tree&&, TreePath, U u) const {\n+487 return Hybrid::plus(u,Indices::_1);\n+488 }\n+489 };\n+490\n+_\b4_\b9_\b1 struct _\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+492 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+493 , public _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+494 , public _\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+495 {\n+496 template<class Tree, class TreePath, class U>\n+_\b4_\b9_\b7 auto _\bl_\be_\ba_\bf(Tree&&, TreePath, U u) const\n+498 {\n+499 auto path_size = index_constant<_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be(TreePath{})>{};\n+500 auto _\bd_\be_\bp_\bt_\bh = Hybrid::plus(path_size,Indices::_1);\n+501 return Hybrid::max(_\bd_\be_\bp_\bt_\bh,u);\n+502 }\n+503 };\n+504\n+506 // result is alwayas an integral constant\n+507 template<typename Tree>\n+_\b5_\b0_\b8 auto _\bd_\be_\bp_\bt_\bh(const Tree& tree)\n+509 {\n+510 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Indices::_0);\n+511 }\n+512\n+514 // return types is std::integral_constant.\n+515 template<typename Tree>\n+_\b5_\b1_\b6 constexpr auto _\bd_\be_\bp_\bt_\bh()\n+517 {\n+518 return decltype(_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(std::declval<Tree>(),_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+{},Indices::_0)){};\n+519 }\n+520\n+522 // if Tree is dynamic, return type is std::size_t, otherwise std::\n+integral_constant.\n+523 template<typename Tree>\n+_\b5_\b2_\b4 auto _\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt(const Tree& tree)\n+525 {\n+526 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Indices::_0);\n+527 }\n+528\n+530 // if Tree is dynamic, return type is std::size_t, otherwise std::\n+integral_constant.\n+531 template<typename Tree>\n+_\b5_\b3_\b2 auto _\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt(const Tree& tree)\n+533 {\n+534 return _\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br{},Dune::Indices::_0);\n+535 }\n+536\n+538 template<typename Tree>\n+_\b5_\b3_\b9 constexpr bool _\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc = std::is_same<std::size_t, decltype(leafCount\n+(std::declval<Tree>()))>{};\n+540\n+541 } // namespace Experimental::Info\n+542\n+544\n+545 } // namespace TypeTree\n+546} //namespace Dune\n+547\n+548#endif // DUNE_TYPETREE_VISITOR_HH\n+_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+typename impl::_Child< Node, indices... >::type Child\n+Template alias for the type of a child node given by a list of child indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bS_\bi_\bz_\be\n+constexpr std::size_t treePathSize(const HybridTreePath< T... > &)\n+Returns the size (number of components) of the given HybridTreePath.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:334\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bE_\bn_\bt_\br_\by\n-A filter entry describing the mapping of one child in the filtered node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt\n-The result of a filter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp\n-std::tuple< FilterEntries... > IndexMap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static const std::size_t size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n-std::tuple< typename Node::template Child< FilterEntries::original_index >... >\n-Children\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n-std::tuple< typename Node::template Child< FilterEntries::original_index >::\n-Type... > ChildTypes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bR_\be_\bs_\bu_\bl_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::tuple< std::shared_ptr< typename Node::template Child< FilterEntries::\n-original_index >::Type >... > NodeStorage\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-Tag describing a simple filter that can only decide whether or not to include a\n-single given child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-Tag describing an advanced filter that has full control over the construction\n-of the list of FilterEn...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br\n-Base class for advanced filters.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-AdvancedFilterTag FilterTag\n-Filter tag for deciding on filter application mechanism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-Apply this filter to the given node and children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bA_\bd_\bv_\ba_\bn_\bc_\be_\bd_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bt_\by_\bp_\be\n-implementation defined type\n-The result of the filtering process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br\n-Default simple filter that accepts any node and leaves its child structure\n-unchanged.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\bT_\ba_\bg\n-SimpleFilterTag FilterTag\n-Filter tag for deciding on filter application mechanism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be\n-Validates the combination of filter and node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bA_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n+auto hybridApplyToTree(Tree &&tree, Visitor &&visitor, Init &&init)\n+Apply hybrid visitor to TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:701\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bf_\bu_\bl_\bl_\by_\bS_\bt_\ba_\bt_\bi_\bc\n+@ fullyStatic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n+@ dynamic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bD_\by_\bn_\ba_\bm_\bi_\bc\n+constexpr bool isDynamic\n+true if any of the nodes in the tree only has dynamic degree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:539\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt\n+auto leafCount(const Tree &tree)\n+The number of leaf nodes in the Tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt\n+auto nodeCount(const Tree &tree)\n+The total number of nodes in the Tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:524\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bd_\be_\bp_\bt_\bh\n+constexpr auto depth()\n+The depth of the Tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:516\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Visitor interface and base class for TypeTree visitors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n+void in(T &&, TreePath) const\n+Method for infix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n+void afterChild(T &&, Child &&, TreePath, ChildIndex) const\n+Method for child-parent traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n+void beforeChild(T &&, Child &&, TreePath, ChildIndex) const\n+Method for parent-child traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n+void post(T &&, TreePath) const\n+Method for postfix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n+void leaf(T &&, TreePath) const\n+Method for leaf traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n+void pre(T &&, TreePath) const\n+Method for prefix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Visitor interface and base class for visitors of pairs of TypeTrees.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n+void leaf(T1 &&, T2 &&, TreePath) const\n+Method for leaf traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n+void beforeChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex)\n+const\n+Method for parent-child traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n+void pre(T1 &&, T2 &&, TreePath) const\n+Method for prefix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n+void post(T1 &&, T2 &&, TreePath) const\n+Method for postfix traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n+void in(T1 &&, T2 &&, TreePath) const\n+Method for infix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n+void afterChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const\n+Method for child-parent traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Hybrid visitor interface and base class for TypeTree hybrid visitors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:286\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bt\n+auto post(T &&, TreePath, const U &u) const\n+Method for postfix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:316\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n+auto pre(T &&, TreePath, const U &u) const\n+Method for prefix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n+auto leaf(T &&, TreePath, const U &u) const\n+Method for leaf traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\ba_\bf_\bt_\be_\br_\bC_\bh_\bi_\bl_\bd\n+auto afterChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const\n+Method for child-parent traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bi_\bn\n+auto in(T &&, TreePath, const U &u) const\n+Method for infix tree traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bH_\by_\bb_\br_\bi_\bd_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n+auto beforeChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const\n+Method for parent-child traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:336\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn\n+Mixin base class for visitors that only want to visit the direct children of a\n+node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n+Template struct for determining whether or not to visit a given child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bv_\ba_\bl_\bu_\be\n static const bool value\n-True if the combination of filter and node is valid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-Applies the filter to the given child node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bF_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+Do not visit any child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be\n+Mixin base class for visitors that want to visit the complete tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:384\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd\n+Template struct for determining whether or not to visit a given child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:396\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bT_\br_\be_\be_\b:_\b:_\bV_\bi_\bs_\bi_\bt_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bv_\ba_\bl_\bu_\be\n static const bool value\n-True if the child will be included in the filtered node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bF_\bi_\bl_\bt_\be_\br\n-Filter class for FilteredCompositeNode that selects the children with the given\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:161\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br\n-Adapter class that takes a SimpleFilter, validated it and turns it into an\n-AdvancedFilter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-Apply the filter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bi_\bl_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\bl_\by_\b:_\b:_\bt_\by_\bp_\be\n-filter_helper< Filter, 0, 0, Children... >::template apply ::type type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filters.hh:221\n+Visit any child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:398\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+Mixin base class for visitors that require a static TreePath during traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:412\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n+static const TreePathType::Type treePathType\n+Use the static tree traversal algorithm.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:414\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl\n+Mixin base class for visitors that only need a dynamic TreePath during\n+traversal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n+static const TreePathType::Type treePathType\n+Use the dynamic tree traversal algorithm.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:428\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Convenience base class for visiting the entire tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:435\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Convenience base class for visiting the direct children of a node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:441\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Convenience base class for visiting an entire tree pair.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:447\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\bi_\br_\be_\bc_\bt_\bC_\bh_\bi_\bl_\bd_\br_\be_\bn_\bP_\ba_\bi_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+Convenience base class for visiting the direct children of a node pair.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:453\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:461\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n+auto leaf(Tree &&, TreePath, U u) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:475\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n+auto beforeChild(Tree &&, Child &&, TreePath, ChildIndex, U u) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:463\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bL_\be_\ba_\bf_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bb_\be_\bf_\bo_\br_\be_\bC_\bh_\bi_\bl_\bd\n+std::size_t beforeChild(Tree &&, Child &&, TreePath, std::size_t, U u) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:469\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:484\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bN_\bo_\bd_\be_\bC_\bo_\bu_\bn_\bt_\be_\br_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bp_\br_\be\n+auto pre(Tree &&, TreePath, U u) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:486\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:495\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bp_\be_\br_\bi_\bm_\be_\bn_\bt_\ba_\bl_\b:_\b:_\bI_\bn_\bf_\bo_\b:_\b:_\bD_\be_\bp_\bt_\bh_\bV_\bi_\bs_\bi_\bt_\bo_\br_\b:_\b:_\bl_\be_\ba_\bf\n+auto leaf(Tree &&, TreePath, U u) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn visitor.hh:497\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00077.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00077.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: dynamicpowernode.hh File Reference</title>\n+<title>dune-typetree: transformation.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -71,42 +71,52 @@\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n-<a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">dynamicpowernode.hh File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> |\n+<a href=\"#func-members\">Functions</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">transformation.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <cassert></code><br />\n-<code>#include <vector></code><br />\n+<div class=\"textblock\"><code>#include <array></code><br />\n+<code>#include <tuple></code><br />\n <code>#include <memory></code><br />\n-<code>#include <type_traits></code><br />\n+<code>#include <utility></code><br />\n+<code>#include <dune/common/hybridutilities.hh></code><br />\n+<code>#include <dune/common/exceptions.hh></code><br />\n <code>#include <dune/common/typetraits.hh></code><br />\n-<code>#include <dune/common/std/type_traits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code><br />\n </div>\n <p><a href=\"a00077_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01084.html\">Dune::TypeTree::DynamicPowerNode< T ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Collect multiple instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. <a href=\"a01084.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01364.html\">Dune::TypeTree::TransformTree< SourceTree, Transformation, Tag, recursive ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Transform a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <a href=\"a01364.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:ga48cffe31075a96776d284a184097a2aa\" id=\"r_ga48cffe31075a96776d284a184097a2aa\"><td class=\"memTemplParams\" colspan=\"2\">template<typename SourceNode , typename Transformation , typename Tag > </td></tr>\n+<tr class=\"memitem:ga48cffe31075a96776d284a184097a2aa\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">Dune::TypeTree::registerNodeTransformation</a> (SourceNode *, Transformation *, Tag *)</td></tr>\n+<tr class=\"memdesc:ga48cffe31075a96776d284a184097a2aa\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Register transformation descriptor to transform SourceNode with Transformation. <br /></td></tr>\n+<tr class=\"separator:ga48cffe31075a96776d284a184097a2aa\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,39 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dynamicpowernode.hh File Reference\n-#include <cassert>\n-#include <vector>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+transformation.hh File Reference\n+#include <array>\n+#include <tuple>\n #include <memory>\n-#include <type_traits>\n+#include <utility>\n+#include <dune/common/hybridutilities.hh>\n+#include <dune/common/exceptions.hh>\n #include <dune/common/typetraits.hh>\n-#include <dune/common/std/type_traits.hh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b<_\b _\bT_\b _\b>\n-\u00a0 Collect multiple instances of type T within a _\bd_\bu_\bn_\be_\b-_\bt_\by_\bp_\be_\bt_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\ba_\bg_\b,\n+ _\br_\be_\bc_\bu_\br_\bs_\bi_\bv_\be_\b _\b>\n+\u00a0 Transform a _\bT_\by_\bp_\be_\bT_\br_\be_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename SourceNode , typename Transformation , typename Tag >\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn (SourceNode *, Transformation\n+ *, Tag *)\n+\u00a0 Register transformation descriptor to transform SourceNode with\n+ Transformation.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00077_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00077_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: dynamicpowernode.hh Source File</title>\n+<title>dune-typetree: transformation.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,221 +74,512 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">dynamicpowernode.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">transformation.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00077.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <vector></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <array></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n <div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <memory></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <utility></span></div>\n <div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> </div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/utility.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00044.html\">dune/typetree/typetraits.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> T></div>\n-<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html\"> 34</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01084.html\">DynamicPowerNode</a></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\"> 40</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\"> 43</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\">isPower</a> = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\"> 46</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\">isComposite</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\"> 49</a></span> std::size_t <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keywordflow\">return</span> _children.size();</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\"> 55</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a> <a class=\"code hl_typedef\" href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\">NodeTag</a>;</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\"> 58</a></span> <span class=\"keyword\">typedef</span> T <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\"> 61</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<T> <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a>;</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\"> 64</a></span> <span class=\"keyword\">typedef</span> std::shared_ptr<const T> <a class=\"code hl_typedef\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">ChildConstStorageType</a>;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\"> 67</a></span> <span class=\"keyword\">typedef</span> std::vector<ChildStorageType> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>;</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\"> 77</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& <a class=\"code hl_function\" href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\">child</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> {</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00014.html\">dune/typetree/typetraits.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00035.html\">dune/typetree/utility.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> Tag></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\"> 54</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">registerNodeTransformation</a>(SourceNode*, Transformation*, Tag*);</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span><span class=\"preprocessor\">#else </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Tag></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">struct </span>LookupNodeTransformation</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> {</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">registerNodeTransformation</a>(declptr<S>(),declptr<T>(),declptr<Tag>())) lookup_type;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01548.html\">evaluate_if_meta_function</a><</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> lookup_type</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> >::type type;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> <span class=\"keyword\">static_assert</span>((!std::is_same<type,void>::value), <span class=\"stringliteral\">"Unable to find valid transformation descriptor"</span>);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> };</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00087\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\"> 87</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& <a class=\"code hl_function\" href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keywordflow\">return</span> *_children[i];</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\"> 97</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a> <a class=\"code hl_function\" href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\">childStorage</a> (std::size_t i)</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> {</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceTree, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">typename</span> Tag = StartTag, <span class=\"keywordtype\">bool</span> recursive = true></div>\n+<div class=\"foldopen\" id=\"foldopen00095\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html\"> 95</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01364.html\">TransformTree</a></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> {</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<SourceTree,Transformation,typename SourceTree::ImplementationTag>::type NodeTransformation;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"comment\">// the type of the new tree that will result from this transformation</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive>::transformed_type transformed_type;</div>\n <div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00110\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\"> 110</a></span> <a class=\"code hl_typedef\" href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">ChildConstStorageType</a> <a class=\"code hl_function\" href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"keywordflow\">return</span> _children[i];</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\"> 117</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>& t)</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> _children[i] = stackobject_to_shared_ptr(t);</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\"> 124</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a>&& t)</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> _children[i] = convert_arg(std::move(t));</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\"> 131</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\">setChild</a> (std::size_t i, <a class=\"code hl_typedef\" href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">ChildStorageType</a> st)</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> {</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> assert(i < <a class=\"code hl_function\" href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">degree</a>() && <span class=\"stringliteral\">"child index out of range"</span>);</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> _children[i] = std::move(st);</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00137\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\"> 137</a></span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>& <a class=\"code hl_function\" href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span><span class=\"keyword\"> </span>{</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keywordflow\">return</span> _children;</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> <span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\"> 151</a></span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> () = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"comment\">// the storage type of the new tree that will result from this transformation</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive>::transformed_storage_type transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\"> 111</a></span> <span class=\"keyword\">typedef</span> transformed_type <a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\"> 113</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a> <a class=\"code hl_typedef\" href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\">Type</a>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\"> 116</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> SourceTree& s, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> {</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(s,t);</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00122\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\"> 122</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\">transform</a>(<span class=\"keyword\">const</span> SourceTree& s, Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> {</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(s,t);</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\"> 128</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\">transform</a>(std::shared_ptr<const SourceTree> sp, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> {</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(sp,t);</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00134\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\"> 134</a></span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\">transform</a>(std::shared_ptr<const SourceTree> sp, Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> {</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">::transform</a>(sp,t);</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\"> 141</a></span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const SourceTree> sp, <span class=\"keyword\">const</span> Transformation& t = Transformation())</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">::transform_storage</a>(sp,t);</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\"> 148</a></span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\">transform_storage</a>(std::shared_ptr<const SourceTree> sp, Transformation& t)</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> {</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"a01364.html\">TransformTree<SourceTree,Transformation,NodeTag<SourceTree></a>,NodeTransformation::recursive><a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">::transform_storage</a>(sp,t);</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00162\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\"> 162</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\">DynamicPowerNode</a> (std::size_t size)</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> : _children(size)</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00167\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\"> 167</a></span> <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\">DynamicPowerNode</a> (<a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a> children)</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> : _children(std::move(children))</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"preprocessor\">#ifdef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00174\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\"> 174</a></span> <a class=\"code hl_function\" href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\">DynamicPowerNode</a> (T& t1, T& t2, ...)</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...), <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> (Children&&... children)</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span><span class=\"preprocessor\">#ifndef DOXYGEN </span><span class=\"comment\">// internal per-node implementations of the transformation algorithm</span></div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span> <span class=\"comment\">// handle a leaf node - this is easy</span></div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keywordtype\">bool</span> recursive></div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keyword\">struct </span>TransformTree<S,T,LeafNodeTag,recursive></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"comment\">// get transformed type from specification</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,ImplementationTag<S>><a class=\"code hl_typedef\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">::type</a> NodeTransformation;</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_type transformed_type;</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_storage_type transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, T& t)</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> {</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> }</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> {</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> }</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(std::shared_ptr<const S> sp, T& t)</div>\n <div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> {</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> _children = <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>{convert_arg(std::forward<Children>(children))...};</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n <div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n <div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... Children,</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...), <span class=\"keywordtype\">bool</span>> = <span class=\"keyword\">true</span>></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> <a class=\"code hl_function\" href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">DynamicPowerNode</a> (std::shared_ptr<Children>... children)</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> {</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> _children = <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a>{std::move(children)...};</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> {</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> }</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, T& t)</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> {</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> }</div>\n <div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <a class=\"code hl_typedef\" href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">NodeStorage</a> _children;</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_DYNAMICPOWERNODE_HH</span></div>\n-<div class=\"ttc\" id=\"aa00044_html\"><div class=\"ttname\"><a href=\"a00044.html\">typetraits.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">utility.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> {</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> }</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> };</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> <span class=\"comment\">// common implementation for non-recursive transformation of non-leaf nodes</span></div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> <span class=\"keyword\">struct </span>TransformTreeNonRecursive</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> {</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> <span class=\"comment\">// get transformed type from specification</span></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,ImplementationTag<S>>::type NodeTransformation;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> </div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_type transformed_type;</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::transformed_storage_type transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"> 214</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, T& t)</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> {</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> }</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"> 223</span> {</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s,t);</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> }</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const S> sp, T& t)</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> {</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> }</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> <span class=\"comment\">// delegate instance transformation to per-node specification</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> {</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(sp,t);</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> }</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, T& t)</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> {</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> }</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span> {</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp,t);</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"> 247</span> }</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span> </div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> };</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"keyword\">namespace </span>Impl {</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> <span class=\"comment\">// Helper class to handle recursive power nodes</span></div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Source, <span class=\"keyword\">class</span> Transformation, <span class=\"keyword\">class</span> Tag></div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keyword\">class </span>RecursivePowerTransformTree</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> {</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> <span class=\"comment\">// We only know two types of tags!</span></div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">static_assert</span>(std::is_same_v<Tag,PowerNodeTag> or std::is_same_v<Tag,DynamicPowerNodeTag>);</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">using </span>ChildType = <span class=\"keyword\">typename</span> Source::ChildType;</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> </div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> <span class=\"comment\">// in case degree is dynamic, provid a vector correctly initialized</span></div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodeStorage></div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> node_storage_provider(<span class=\"keyword\">const</span> std::size_t& degree)</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> {</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> <span class=\"keywordflow\">return</span> std::vector<NodeStorage>(degree);</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> }</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> <span class=\"comment\">// in case degree is static, provid an array</span></div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> NodeStorage, <span class=\"keyword\">class</span> StaticIndex></div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> node_storage_provider(StaticIndex)</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> {</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> <span class=\"keywordflow\">return</span> std::array<NodeStorage,std::size_t(StaticIndex{})>();</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> }</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> <span class=\"comment\">// get transformed type from specification</span></div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> <span class=\"comment\">// Handling this transformation in a way that makes the per-node specification easy to write</span></div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> <span class=\"comment\">// is a little involved:</span></div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"> 281</span> <span class=\"comment\">// The problem is that the transformed power node must be parameterized on the transformed child</span></div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> <span class=\"comment\">// type. So we need to transform the child type and pass the transformed child type to an inner</span></div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"comment\">// template of the node transformation struct called result (see example of such a specification</span></div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> <span class=\"comment\">// further down).</span></div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> <span class=\"keyword\">using </span>NodeTransformation = <span class=\"keyword\">typename</span> LookupNodeTransformation<Source,Transformation,ImplementationTag<Source>>::type;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> <span class=\"keyword\">using </span>ChildNodeTransformation = <span class=\"keyword\">typename</span> LookupNodeTransformation<ChildType,Transformation,ImplementationTag<ChildType>>::type;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> <span class=\"comment\">// Since every child is same type, is enough to get transformation once</span></div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">using </span>ChildTreeTransformation = TransformTree<ChildType,</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> Transformation,</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> NodeTag<ChildType>,</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span> ChildNodeTransformation::recursive>;</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> <span class=\"comment\">// Get transformed type of children</span></div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> <span class=\"keyword\">using </span>transformed_child_type = <span class=\"keyword\">typename</span> ChildTreeTransformation::transformed_type;</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> <span class=\"keyword\">using </span>transformed_child_storage_type = <span class=\"keyword\">typename</span> ChildTreeTransformation::transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> <span class=\"comment\">// Apply transformation from children to current node</span></div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> <span class=\"keyword\">using </span>transformed_type = <span class=\"keyword\">typename</span> NodeTransformation::template result<transformed_child_type>::type;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> <span class=\"keyword\">using </span>transformed_storage_type = <span class=\"keyword\">typename</span> NodeTransformation::template result<transformed_child_type>::storage_type;</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"> 303</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> Source& source, Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> {</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source.degree());</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source.degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> children_storage[k] = ChildTreeTransformation::transform_storage(source.childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> }</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> }</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"> 312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> Source& source, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> {</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source.degree());</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source.degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> children_storage[k] = ChildTreeTransformation::transform_storage(source.childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> }</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> }</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> </div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const Source> source_ptr, Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source_ptr->degree());</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source_ptr,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> }</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> </div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> <span class=\"comment\">// Transform an instance of source tree.</span></div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"> 334</span> <span class=\"keyword\">static</span> transformed_type transform(std::shared_ptr<const Source> source_ptr, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> {</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"> 336</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<std::shared_ptr<transformed_child_type>>(source_ptr->degree());</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> }</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"> 340</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(source_ptr,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> }</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> </div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> <span class=\"comment\">// Transform an instance of source tree ptr.</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const Source> source_ptr, Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> {</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<transformed_child_storage_type>(source_ptr->degree());</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> }</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(source_ptr,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"> 351</span> }</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> <span class=\"comment\">// Transform an instance of source tree ptr.</span></div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const Source> source_ptr, <span class=\"keyword\">const</span> Transformation& transformation)</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> {</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span> <span class=\"keyword\">auto</span> children_storage = node_storage_provider<transformed_child_storage_type>(source_ptr->degree());</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\"> 357</span> <span class=\"keywordflow\">for</span> (std::size_t k = 0; k < source_ptr->degree(); ++k) {</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> children_storage[k] = ChildTreeTransformation::transform_storage(source_ptr->childStorage(k),transformation);</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> }</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"> 360</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(source_ptr,transformation,children_storage);</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"> 361</span> }</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"> 362</span> </div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"> 363</span> };</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"> 364</span> } <span class=\"comment\">// namespace Impl</span></div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"> 365</span> </div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"> 366</span> <span class=\"comment\">// Recursive version of the PowerNode transformation for static nodes.</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Source, <span class=\"keyword\">typename</span> Transformation></div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\"> 368</span> <span class=\"keyword\">struct </span>TransformTree<Source,Transformation,PowerNodeTag,true></div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> : <span class=\"keyword\">public</span> Impl::RecursivePowerTransformTree<Source,Transformation,PowerNodeTag></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> {};</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> </div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> <span class=\"comment\">// Recursive version of the DynamicPowerNode transformation for static nodes.</span></div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Source, <span class=\"keyword\">typename</span> Transformation></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> <span class=\"keyword\">struct </span>TransformTree<Source,Transformation,DynamicPowerNodeTag,true></div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> : <span class=\"keyword\">public</span> Impl::RecursivePowerTransformTree<Source,Transformation,DynamicPowerNodeTag></div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> {};</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> </div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> <span class=\"comment\">// non-recursive version of the PowerNode transformation.</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"> 380</span> <span class=\"keyword\">struct </span>TransformTree<S,T,PowerNodeTag,false></div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"> 381</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"> 382</span> {};</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> </div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span> <span class=\"comment\">// non-recursive version of the DynamicPowerNodeTag transformation.</span></div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"> 385</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"> 386</span> <span class=\"keyword\">struct </span>TransformTree<S,T,DynamicPowerNodeTag,false></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> {};</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> </div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> <span class=\"comment\">// helper struct that does the actual transformation for a composite node. We need this additional struct</span></div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> <span class=\"comment\">// to extract the template argument list with the types of all children from the node, which we cannot do</span></div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> <span class=\"comment\">// directly in the transformation<> template, as the type passed to transformation<> will usually be a</span></div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> <span class=\"comment\">// derived type and will normally have more template arguments than just the children. This declaration</span></div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> <span class=\"comment\">// just introduces the type of the helper struct, we always instantiate the specialization defined below;</span></div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> Children, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> <span class=\"keyword\">struct </span>transform_composite_node;</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> </div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"> 398</span> <span class=\"comment\">// specialized version of the helper struct which extracts the template argument list with the children from</span></div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"> 399</span> <span class=\"comment\">// its second template parameter, which has to be CompositeNode::ChildTypes. Apart from that, the struct is</span></div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\"> 400</span> <span class=\"comment\">// similar to the one for a PowerNode, but it obviously delegates transformation of the children to the TMP.</span></div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span>... C></div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> <span class=\"keyword\">struct </span>transform_composite_node<S,std::tuple<C...>,T></div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"> 403</span> {</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\"> 405</span> <span class=\"comment\">// transformed type, using the same nested struct trick as the PowerNode</span></div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\"> 406</span> <span class=\"keyword\">typedef</span> ImplementationTag<S> Tag;</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\"> 407</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> LookupNodeTransformation<S,T,Tag>::type NodeTransformation;</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\"> 408</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::template <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a><<span class=\"keyword\">typename</span> TransformTree<C,</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"> 409</span> T,</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\"> 410</span> NodeTag<C>,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"> 411</span> LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"> 412</span> >::transformed_type...</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\"> 413</span> >::type transformed_type;</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> </div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> NodeTransformation::template <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a><<span class=\"keyword\">typename</span> TransformTree<C,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> T,</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> NodeTag<C>,</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> >::transformed_type...</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> >::storage_type transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> </div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"> 422</span> <span class=\"comment\">// Retrieve the transformation descriptor for the child with index i.</span></div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"> 423</span> <span class=\"comment\">// This little helper improves really improves the readability of the</span></div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"> 424</span> <span class=\"comment\">// transformation functions.</span></div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"> 425</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i></div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"> 426</span> <span class=\"keyword\">struct </span>ChildTransformation</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"> 427</span> : <span class=\"keyword\">public</span> TransformTree<typename S::template Child<i>::Type,</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"> 428</span> T,</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"> 429</span> NodeTag<typename S::template Child<i>::Type>,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"> 430</span> LookupNodeTransformation<</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"> 431</span> typename S::template Child<i>::Type,</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\"> 432</span> T,</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\"> 433</span> ImplementationTag<typename S::template Child<i>::Type></div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"> 434</span> >::type::recursive</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\"> 435</span> ></div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"> 436</span> {};</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\"> 437</span> </div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> i, <span class=\"keyword\">typename</span> Tuple, <span class=\"keyword\">typename</span> Value></div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> setElement(Tuple& tuple, Value&& value)</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> {</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> std::get<i>(tuple) = std::forward<Value>(value);</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> }</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> </div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Trafo, std::size_t... i></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> <span class=\"keyword\">static</span> transformed_type transform(<span class=\"keyword\">const</span> S& s, Trafo&& t, std::index_sequence<i...> indices)</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> {</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> std::tuple<typename ChildTransformation<i>::transformed_storage_type...> storage;</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage, ChildTransformation<i>::transform_storage(s.template childStorage<i>(), std::forward<Trafo>(t))),0)...});</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform(s, std::forward<Trafo>(t), std::get<i>(storage)...);</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\"> 450</span> }</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span> </div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"> 452</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Trafo, std::size_t... i></div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"> 453</span> <span class=\"keyword\">static</span> transformed_storage_type transform_storage(std::shared_ptr<const S> sp, Trafo&& t, std::index_sequence<i...> indices)</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"> 454</span> {</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\"> 455</span> std::tuple<typename ChildTransformation<i>::transformed_storage_type...> storage;</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\"> 456</span> Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage, ChildTransformation<i>::transform_storage(sp->template childStorage<i>(), std::forward<Trafo>(t))),0)...});</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"> 457</span> <span class=\"keywordflow\">return</span> NodeTransformation::transform_storage(sp, std::forward<Trafo>(t), std::get<i>(storage)...);</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"> 458</span> }</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\"> 459</span> };</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\"> 460</span> </div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\"> 461</span> </div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"> 462</span> <span class=\"comment\">// the specialization of transformation<> for the CompositeNode. This just extracts the</span></div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> <span class=\"comment\">// CompositeNode::ChildTypes member and forwards to the helper struct</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\"> 464</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\"> 465</span> <span class=\"keyword\">struct </span>TransformTree<S,T,CompositeNodeTag,true></div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\"> 466</span> {</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> </div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> </div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> S::ChildTypes ChildTypes;</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> </div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> <span class=\"keyword\">static</span> <span class=\"keyword\">auto</span> child_indices()</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\"> 473</span> {</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"> 474</span> <span class=\"keywordflow\">return</span> std::make_index_sequence<S::degree()>();</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\"> 475</span> }</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"> 476</span> </div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\"> 477</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"> 478</span> </div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"> 479</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> transform_composite_node<S,ChildTypes,T>::transformed_type transformed_type;</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\"> 480</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> transform_composite_node<S,ChildTypes,T>::transformed_storage_type transformed_storage_type;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\"> 481</span> </div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"> 482</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, T& t)</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\"> 483</span> {</div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"> 484</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform(s,t,child_indices());</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</span> }</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\"> 486</span> </div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\"> 487</span> <span class=\"keyword\">static</span> transformed_type <a class=\"code hl_function\" href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">transform</a>(<span class=\"keyword\">const</span> S& s, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"> 488</span> {</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"> 489</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform(s,t,child_indices());</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\"> 490</span> }</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\"> 491</span> </div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\"> 492</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, T& t)</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"> 493</span> {</div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"> 494</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform_storage(sp,t,child_indices());</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"> 495</span> }</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\"> 496</span> </div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\"> 497</span> <span class=\"keyword\">static</span> transformed_storage_type <a class=\"code hl_function\" href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">transform_storage</a>(std::shared_ptr<const S> sp, <span class=\"keyword\">const</span> T& t)</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\"> 498</span> {</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"> 499</span> <span class=\"keywordflow\">return</span> transform_composite_node<S,ChildTypes,T>::transform_storage(sp,t,child_indices());</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"> 500</span> }</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"> 501</span> </div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> };</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\"> 503</span> </div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"> 504</span> <span class=\"comment\">// non-recursive version of the CompositeNode transformation.</span></div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"> 505</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> S, <span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"> 506</span> <span class=\"keyword\">struct </span>TransformTree<S,T,CompositeNodeTag,false></div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"> 507</span> : <span class=\"keyword\">public</span> TransformTreeNonRecursive<S,T></div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"> 508</span> {};</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> </div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"> 510</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> </div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\"> 513</span> </div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> </div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRANSFORMATION_HH</span></div>\n+<div class=\"ttc\" id=\"aa00014_html\"><div class=\"ttname\"><a href=\"a00014.html\">typetraits.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00023_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa00035_html\"><div class=\"ttname\"><a href=\"a00035.html\">utility.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00094_html_ga48cffe31075a96776d284a184097a2aa\"><div class=\"ttname\"><a href=\"a00094.html#ga48cffe31075a96776d284a184097a2aa\">Dune::TypeTree::registerNodeTransformation</a></div><div class=\"ttdeci\">void registerNodeTransformation(SourceNode *, Transformation *, Tag *)</div><div class=\"ttdoc\">Register transformation descriptor to transform SourceNode with Transformation.</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01084_html\"><div class=\"ttname\"><a href=\"a01084.html\">Dune::TypeTree::DynamicPowerNode</a></div><div class=\"ttdoc\">Collect multiple instances of type T within a dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:35</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a071ec7382a162ae89deec9bbb2c8c038\"><div class=\"ttname\"><a href=\"a01084.html#a071ec7382a162ae89deec9bbb2c8c038\">Dune::TypeTree::DynamicPowerNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:43</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a0dec59b6aacd090206c67d5613ed99f8\"><div class=\"ttname\"><a href=\"a01084.html#a0dec59b6aacd090206c67d5613ed99f8\">Dune::TypeTree::DynamicPowerNode::NodeStorage</a></div><div class=\"ttdeci\">std::vector< ChildStorageType > NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:67</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a0e61cc88f768238a1071da0a72e86ea4\"><div class=\"ttname\"><a href=\"a01084.html#a0e61cc88f768238a1071da0a72e86ea4\">Dune::TypeTree::DynamicPowerNode::nodeStorage</a></div><div class=\"ttdeci\">const NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:137</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a165ad9425514822abdd064204c5a4acd\"><div class=\"ttname\"><a href=\"a01084.html#a165ad9425514822abdd064204c5a4acd\">Dune::TypeTree::DynamicPowerNode::childStorage</a></div><div class=\"ttdeci\">ChildConstStorageType childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:110</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a304ef534f326f6cabde4a4c5875c2cf6\"><div class=\"ttname\"><a href=\"a01084.html#a304ef534f326f6cabde4a4c5875c2cf6\">Dune::TypeTree::DynamicPowerNode::child</a></div><div class=\"ttdeci\">const ChildType & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:87</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a453647c9bbbd135ce3f9192a205ff0f3\"><div class=\"ttname\"><a href=\"a01084.html#a453647c9bbbd135ce3f9192a205ff0f3\">Dune::TypeTree::DynamicPowerNode::ChildStorageType</a></div><div class=\"ttdeci\">std::shared_ptr< T > ChildStorageType</div><div class=\"ttdoc\">The storage type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:61</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a4d066ccd9b100f24523d1ef0b02411b7\"><div class=\"ttname\"><a href=\"a01084.html#a4d066ccd9b100f24523d1ef0b02411b7\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(T &t1, T &t2,...)</div><div class=\"ttdoc\">Initialize all children with the passed-in objects.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:174</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a4fcbd538dac494cb25d69516b098e383\"><div class=\"ttname\"><a href=\"a01084.html#a4fcbd538dac494cb25d69516b098e383\">Dune::TypeTree::DynamicPowerNode::ChildConstStorageType</a></div><div class=\"ttdeci\">std::shared_ptr< const T > ChildConstStorageType</div><div class=\"ttdoc\">The const version of the storage type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:64</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a523963fb4d8bcd6e72efaa9fc895daa6\"><div class=\"ttname\"><a href=\"a01084.html#a523963fb4d8bcd6e72efaa9fc895daa6\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(NodeStorage children)</div><div class=\"ttdoc\">Initialize the DynamicPowerNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:167</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a52a60be3d89ce690963493105bc58b78\"><div class=\"ttname\"><a href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\">Dune::TypeTree::DynamicPowerNode::NodeTag</a></div><div class=\"ttdeci\">DynamicPowerNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes the node.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:55</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a6b08f7dded4e1a0a347506841df679c6\"><div class=\"ttname\"><a href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">Dune::TypeTree::DynamicPowerNode::ChildType</a></div><div class=\"ttdeci\">T ChildType</div><div class=\"ttdoc\">The type of each child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:58</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a74eb4bd490c115744f64c5bc34630c34\"><div class=\"ttname\"><a href=\"a01084.html#a74eb4bd490c115744f64c5bc34630c34\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildType &t)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:117</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a7610f9b8e0cd55abfddc968d6ed35c8b\"><div class=\"ttname\"><a href=\"a01084.html#a7610f9b8e0cd55abfddc968d6ed35c8b\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildStorageType st)</div><div class=\"ttdoc\">Sets the stored value representing the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:131</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a92bc8b65e9546fe2c00d7166861964ab\"><div class=\"ttname\"><a href=\"a01084.html#a92bc8b65e9546fe2c00d7166861964ab\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode(std::size_t size)</div><div class=\"ttdoc\">Construct a node with the given number of children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:162</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a95a5cd912bab80a57ca6ffc8fbdfb092\"><div class=\"ttname\"><a href=\"a01084.html#a95a5cd912bab80a57ca6ffc8fbdfb092\">Dune::TypeTree::DynamicPowerNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a non composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:46</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a9b0c8045e492eccd67684f9b3ade4ab4\"><div class=\"ttname\"><a href=\"a01084.html#a9b0c8045e492eccd67684f9b3ade4ab4\">Dune::TypeTree::DynamicPowerNode::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ChildType &&t)</div><div class=\"ttdoc\">Store the passed value in i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:124</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_a9b9af0f34350b5ea2e4a09b6d2e7082b\"><div class=\"ttname\"><a href=\"a01084.html#a9b9af0f34350b5ea2e4a09b6d2e7082b\">Dune::TypeTree::DynamicPowerNode::child</a></div><div class=\"ttdeci\">ChildType & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:77</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_ac566323ae8dfc4020be6ab256ea6de96\"><div class=\"ttname\"><a href=\"a01084.html#ac566323ae8dfc4020be6ab256ea6de96\">Dune::TypeTree::DynamicPowerNode::degree</a></div><div class=\"ttdeci\">std::size_t degree() const</div><div class=\"ttdoc\">The number of children.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_ac8c03856802092989c7a69fee45ad314\"><div class=\"ttname\"><a href=\"a01084.html#ac8c03856802092989c7a69fee45ad314\">Dune::TypeTree::DynamicPowerNode::childStorage</a></div><div class=\"ttdeci\">ChildStorageType childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:97</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_ad8f970336459fcc261f189d5d1ed235e\"><div class=\"ttname\"><a href=\"a01084.html#ad8f970336459fcc261f189d5d1ed235e\">Dune::TypeTree::DynamicPowerNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> dynamicpowernode.hh:40</div></div>\n-<div class=\"ttc\" id=\"aa01084_html_af4d06e3f91f6b13788f4cce30472944d\"><div class=\"ttname\"><a href=\"a01084.html#af4d06e3f91f6b13788f4cce30472944d\">Dune::TypeTree::DynamicPowerNode::DynamicPowerNode</a></div><div class=\"ttdeci\">DynamicPowerNode()=delete</div></div>\n-<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n+<div class=\"ttc\" id=\"aa01364_html\"><div class=\"ttname\"><a href=\"a01364.html\">Dune::TypeTree::TransformTree</a></div><div class=\"ttdoc\">Transform a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:96</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_a0fa8df89b999152babfee3749e5e03fd\"><div class=\"ttname\"><a href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\">Dune::TypeTree::TransformTree::Type</a></div><div class=\"ttdeci\">type Type</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_a1b704cd756aae56438079f11a0f43fd0\"><div class=\"ttname\"><a href=\"a01364.html#a1b704cd756aae56438079f11a0f43fd0\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceTree > sp, Transformation &t)</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:134</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_a6ed10e27fd50de59bc28ea23a06f9925\"><div class=\"ttname\"><a href=\"a01364.html#a6ed10e27fd50de59bc28ea23a06f9925\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(std::shared_ptr< const SourceTree > sp, const Transformation &t=Transformation())</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:128</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_a84a5e3bb26d3f9f922603acbce5ab1a4\"><div class=\"ttname\"><a href=\"a01364.html#a84a5e3bb26d3f9f922603acbce5ab1a4\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceTree &s, Transformation &t)</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:122</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_aa01b86c1992348c37a370a6eb7e9cd65\"><div class=\"ttname\"><a href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">Dune::TypeTree::TransformTree::type</a></div><div class=\"ttdeci\">transformed_type type</div><div class=\"ttdoc\">The type of the transformed tree.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:111</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_aba5dbf5fc7965852ecfcf89ff52284da\"><div class=\"ttname\"><a href=\"a01364.html#aba5dbf5fc7965852ecfcf89ff52284da\">Dune::TypeTree::TransformTree::transform</a></div><div class=\"ttdeci\">static transformed_type transform(const SourceTree &s, const Transformation &t=Transformation())</div><div class=\"ttdoc\">Apply transformation to an existing tree s.</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:116</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_aca577396e60081dd3c87e64f0d932cc9\"><div class=\"ttname\"><a href=\"a01364.html#aca577396e60081dd3c87e64f0d932cc9\">Dune::TypeTree::TransformTree::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceTree > sp, const Transformation &t=Transformation())</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:141</div></div>\n+<div class=\"ttc\" id=\"aa01364_html_aef1bafb2982714bcf0639d6857b42030\"><div class=\"ttname\"><a href=\"a01364.html#aef1bafb2982714bcf0639d6857b42030\">Dune::TypeTree::TransformTree::transform_storage</a></div><div class=\"ttdeci\">static transformed_storage_type transform_storage(std::shared_ptr< const SourceTree > sp, Transformation &t)</div><div class=\"ttdef\"><b>Definition</b> transformation.hh:148</div></div>\n+<div class=\"ttc\" id=\"aa01548_html\"><div class=\"ttname\"><a href=\"a01548.html\">Dune::TypeTree::evaluate_if_meta_function</a></div><div class=\"ttdoc\">Meta function that evaluates its argument iff it inherits from meta_function.</div><div class=\"ttdef\"><b>Definition</b> typetraits.hh:142</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,257 +1,634 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-dynamicpowernode.hh\n+transformation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n-7#define DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n+6#ifndef DUNE_TYPETREE_TRANSFORMATION_HH\n+7#define DUNE_TYPETREE_TRANSFORMATION_HH\n 8\n-9#include <cassert>\n-10#include <vector>\n+9#include <array>\n+10#include <tuple>\n 11#include <memory>\n-12#include <type_traits>\n+12#include <utility>\n 13\n-14#include <dune/common/typetraits.hh>\n-15#include <dune/common/std/type_traits.hh>\n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be {\n-22 namespace TypeTree {\n-23\n-33 template<typename T>\n-_\b3_\b4 class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-35 {\n-36\n-37 public:\n-38\n-_\b4_\b0 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n-41\n-_\b4_\b3 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = true;\n-44\n-_\b4_\b6 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = false;\n-47\n-_\b4_\b9 std::size_t _\bd_\be_\bg_\br_\be_\be() const\n-50 {\n-51 return _children.size();\n-52 }\n-53\n-_\b5_\b5 typedef _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n-56\n-_\b5_\b8 typedef T _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n-59\n-_\b6_\b1 typedef std::shared_ptr<T> _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be;\n-62\n-_\b6_\b4 typedef std::shared_ptr<const T> _\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be;\n-65\n-_\b6_\b7 typedef std::vector<ChildStorageType> _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n-68\n-69\n-72\n-74\n-_\b7_\b7 _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n-78 {\n-79 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-80 return *_children[i];\n-81 }\n+14#include <dune/common/hybridutilities.hh>\n+15#include <dune/common/exceptions.hh>\n+16#include <dune/common/typetraits.hh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh>\n+21\n+22\n+23namespace _\bD_\bu_\bn_\be {\n+24 namespace TypeTree {\n+25\n+31#ifdef DOXYGEN\n+32\n+34\n+53 template<typename SourceNode, typename Transformation, typename Tag>\n+_\b5_\b4 void _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn(SourceNode*, Transformation*, Tag*);\n+55\n+56#else // DOXYGEN\n+57\n+68 template<typename S, typename T, typename Tag>\n+69 struct LookupNodeTransformation\n+70 {\n+71\n+72 typedef decltype(_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn(declptr<S>(),declptr<T>\n+(),declptr<Tag>())) lookup_type;\n+73\n+74 typedef typename _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn<\n+75 lookup_type\n+76 >::type type;\n+77\n+78 static_assert((!std::is_same<type,void>::value), \"Unable to find valid\n+transformation descriptor\");\n+79 };\n+80\n+81#endif // DOXYGEN\n 82\n-84\n-_\b8_\b7 const _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n-88 {\n-89 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-90 return *_children[i];\n-91 }\n-92\n-94\n-_\b9_\b7 _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n-98 {\n-99 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-100 return _children[i];\n-101 }\n-102\n+83\n+85\n+94 template<typename SourceTree, typename Transformation, typename Tag =\n+StartTag, bool recursive = true>\n+_\b9_\b5 struct _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be\n+96 {\n+97\n+98#ifndef DOXYGEN\n+99\n+100 typedef typename\n+LookupNodeTransformation<SourceTree,Transformation,typename SourceTree::\n+ImplementationTag>::type NodeTransformation;\n+101\n+102 // the type of the new tree that will result from this transformation\n+103 typedef typename\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>::transformed_type transformed_type;\n 104\n-_\b1_\b1_\b0 _\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n-111 {\n-112 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-113 return _children[i];\n-114 }\n-115\n-_\b1_\b1_\b7 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be& t)\n-118 {\n-119 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-120 _children[i] = stackobject_to_shared_ptr(t);\n-121 }\n-122\n-_\b1_\b2_\b4 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be&& t)\n-125 {\n-126 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-127 _children[i] = convert_arg(std::move(t));\n-128 }\n-129\n-_\b1_\b3_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, _\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be st)\n-132 {\n-133 assert(i < _\bd_\be_\bg_\br_\be_\be() && \"child index out of range\");\n-134 _children[i] = std::move(st);\n-135 }\n-136\n-_\b1_\b3_\b7 const _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n-138 {\n-139 return _children;\n-140 }\n-141\n-143\n-146\n-147 protected:\n-148\n-_\b1_\b5_\b1 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be () = delete;\n+105 // the storage type of the new tree that will result from this\n+transformation\n+106 typedef typename\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>::transformed_storage_type transformed_storage_type;\n+107\n+108#endif // DOXYGEN\n+109\n+_\b1_\b1_\b1 typedef transformed_type _\bt_\by_\bp_\be;\n+112\n+_\b1_\b1_\b3 typedef _\bt_\by_\bp_\be _\bT_\by_\bp_\be;\n+114\n+_\b1_\b1_\b6 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceTree& s, const\n+Transformation& t = Transformation())\n+117 {\n+118 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(s,t);\n+119 }\n+120\n+_\b1_\b2_\b2 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const SourceTree& s, Transformation& t)\n+123 {\n+124 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(s,t);\n+125 }\n+126\n+_\b1_\b2_\b8 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceTree> sp,\n+const Transformation& t = Transformation())\n+129 {\n+130 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(sp,t);\n+131 }\n+132\n+_\b1_\b3_\b4 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const SourceTree> sp,\n+Transformation& t)\n+135 {\n+136 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(sp,t);\n+137 }\n+138\n+_\b1_\b4_\b1 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n+SourceTree> sp, const Transformation& t = Transformation())\n+142 {\n+143 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(sp,t);\n+144 }\n+145\n+_\b1_\b4_\b8 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const\n+SourceTree> sp, Transformation& t)\n+149 {\n+150 return\n+_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b,_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bS_\bo_\bu_\br_\bc_\be_\bT_\br_\be_\be_\b>,NodeTransformation::\n+recursive>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(sp,t);\n+151 }\n 152\n-154\n-_\b1_\b6_\b2 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::size_t size)\n-163 : _children(size)\n-164 {}\n-165\n-_\b1_\b6_\b7 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be children)\n-168 : _children(std::move(children))\n-169 {}\n-170\n-171#ifdef DOXYGEN\n-172\n-_\b1_\b7_\b4 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (T& t1, T& t2, ...)\n-175 {}\n-176\n-177#else\n-178\n-179 template<typename... Children,\n-180 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),\n-bool> = true>\n-181 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (Children&&... children)\n+153\n+154 };\n+155\n+156#ifndef DOXYGEN // internal per-node implementations of the transformation\n+algorithm\n+157\n+158 // handle a leaf node - this is easy\n+159 template<typename S, typename T, bool recursive>\n+160 struct TransformTree<S,T,LeafNodeTag,recursive>\n+161 {\n+162 // get transformed type from specification\n+163 typedef typename LookupNodeTransformation<S,T,ImplementationTag<S>>_\b:_\b:_\bt_\by_\bp_\be\n+NodeTransformation;\n+164\n+165 typedef typename NodeTransformation::transformed_type transformed_type;\n+166 typedef typename NodeTransformation::transformed_storage_type\n+transformed_storage_type;\n+167\n+168 // delegate instance transformation to per-node specification\n+169 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, T& t)\n+170 {\n+171 return NodeTransformation::transform(s,t);\n+172 }\n+173\n+174 // delegate instance transformation to per-node specification\n+175 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, const T& t)\n+176 {\n+177 return NodeTransformation::transform(s,t);\n+178 }\n+179\n+180 // delegate instance transformation to per-node specification\n+181 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const S> sp, T& t)\n 182 {\n-183 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{convert_arg(std::forward<Children>(children))...};\n+183 return NodeTransformation::transform(sp,t);\n 184 }\n 185\n-186 template<typename... Children,\n-187 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),\n-bool> = true>\n-188 _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be (std::shared_ptr<Children>... children)\n-189 {\n-190 _children = _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be{std::move(children)...};\n-191 }\n-192\n-193#endif // DOXYGEN\n-194\n+186 // delegate instance transformation to per-node specification\n+187 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(std::shared_ptr<const S> sp, const T& t)\n+188 {\n+189 return NodeTransformation::transform(sp,t);\n+190 }\n+191\n+192 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n+sp, T& t)\n+193 {\n+194 return NodeTransformation::transform_storage(sp,t);\n+195 }\n 196\n-197 private:\n-198 _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be _children;\n-199 };\n-200\n-202\n-203 } // namespace TypeTree\n-204} //namespace Dune\n-205\n-206#endif // DUNE_TYPETREE_DYNAMICPOWERNODE_HH\n+197 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n+sp, const T& t)\n+198 {\n+199 return NodeTransformation::transform_storage(sp,t);\n+200 }\n+201\n+202 };\n+203\n+204\n+205 // common implementation for non-recursive transformation of non-leaf nodes\n+206 template<typename S, typename T>\n+207 struct TransformTreeNonRecursive\n+208 {\n+209 // get transformed type from specification\n+210 typedef typename LookupNodeTransformation<S,T,ImplementationTag<S>>::type\n+NodeTransformation;\n+211\n+212 typedef typename NodeTransformation::transformed_type transformed_type;\n+213 typedef typename NodeTransformation::transformed_storage_type\n+transformed_storage_type;\n+214\n+215 // delegate instance transformation to per-node specification\n+216 static transformed_type transform(const S& s, T& t)\n+217 {\n+218 return NodeTransformation::transform(s,t);\n+219 }\n+220\n+221 // delegate instance transformation to per-node specification\n+222 static transformed_type transform(const S& s, const T& t)\n+223 {\n+224 return NodeTransformation::transform(s,t);\n+225 }\n+226\n+227 // delegate instance transformation to per-node specification\n+228 static transformed_type transform(std::shared_ptr<const S> sp, T& t)\n+229 {\n+230 return NodeTransformation::transform(sp,t);\n+231 }\n+232\n+233 // delegate instance transformation to per-node specification\n+234 static transformed_type transform(std::shared_ptr<const S> sp, const T& t)\n+235 {\n+236 return NodeTransformation::transform(sp,t);\n+237 }\n+238\n+239 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n+sp, T& t)\n+240 {\n+241 return NodeTransformation::transform_storage(sp,t);\n+242 }\n+243\n+244 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n+sp, const T& t)\n+245 {\n+246 return NodeTransformation::transform_storage(sp,t);\n+247 }\n+248\n+249 };\n+250\n+251\n+252 namespace Impl {\n+253\n+254 // Helper class to handle recursive power nodes\n+255 template<class Source, class Transformation, class Tag>\n+256 class RecursivePowerTransformTree\n+257 {\n+258 // We only know two types of tags!\n+259 static_assert(std::is_same_v<Tag,PowerNodeTag> or std::\n+is_same_v<Tag,DynamicPowerNodeTag>);\n+260\n+261 using ChildType = typename Source::ChildType;\n+262\n+263 // in case degree is dynamic, provid a vector correctly initialized\n+264 template<class NodeStorage>\n+265 static auto node_storage_provider(const std::size_t& degree)\n+266 {\n+267 return std::vector<NodeStorage>(degree);\n+268 }\n+269\n+270 // in case degree is static, provid an array\n+271 template<class NodeStorage, class StaticIndex>\n+272 static auto node_storage_provider(StaticIndex)\n+273 {\n+274 return std::array<NodeStorage,std::size_t(StaticIndex{})>();\n+275 }\n+276\n+277 public:\n+278 // get transformed type from specification\n+279 // Handling this transformation in a way that makes the per-node\n+specification easy to write\n+280 // is a little involved:\n+281 // The problem is that the transformed power node must be parameterized on\n+the transformed child\n+282 // type. So we need to transform the child type and pass the transformed\n+child type to an inner\n+283 // template of the node transformation struct called result (see example of\n+such a specification\n+284 // further down).\n+285 using NodeTransformation = typename\n+LookupNodeTransformation<Source,Transformation,ImplementationTag<Source>>::\n+type;\n+286 using ChildNodeTransformation = typename\n+LookupNodeTransformation<ChildType,Transformation,ImplementationTag<ChildType>>::\n+type;\n+287\n+288 private:\n+289 // Since every child is same type, is enough to get transformation once\n+290 using ChildTreeTransformation = TransformTree<ChildType,\n+291 Transformation,\n+292 NodeTag<ChildType>,\n+293 ChildNodeTransformation::recursive>;\n+294\n+295 // Get transformed type of children\n+296 using transformed_child_type = typename ChildTreeTransformation::\n+transformed_type;\n+297 using transformed_child_storage_type = typename ChildTreeTransformation::\n+transformed_storage_type;\n+298 public:\n+299 // Apply transformation from children to current node\n+300 using transformed_type = typename NodeTransformation::template\n+result<transformed_child_type>::type;\n+301 using transformed_storage_type = typename NodeTransformation::template\n+result<transformed_child_type>::storage_type;\n+302\n+303 // Transform an instance of source tree.\n+304 static transformed_type transform(const Source& source, Transformation&\n+transformation)\n+305 {\n+306 auto children_storage = node_storage_provider<std::\n+shared_ptr<transformed_child_type>>(source.degree());\n+307 for (std::size_t k = 0; k < source.degree(); ++k) {\n+308 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source.childStorage(k),transformation);\n+309 }\n+310 return NodeTransformation::transform\n+(source,transformation,children_storage);\n+311 }\n+312\n+313 // Transform an instance of source tree.\n+314 static transformed_type transform(const Source& source, const\n+Transformation& transformation)\n+315 {\n+316 auto children_storage = node_storage_provider<std::\n+shared_ptr<transformed_child_type>>(source.degree());\n+317 for (std::size_t k = 0; k < source.degree(); ++k) {\n+318 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source.childStorage(k),transformation);\n+319 }\n+320 return NodeTransformation::transform\n+(source,transformation,children_storage);\n+321 }\n+322\n+323 // Transform an instance of source tree.\n+324 static transformed_type transform(std::shared_ptr<const Source> source_ptr,\n+Transformation& transformation)\n+325 {\n+326 auto children_storage = node_storage_provider<std::\n+shared_ptr<transformed_child_type>>(source_ptr->degree());\n+327 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n+328 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source_ptr->childStorage(k),transformation);\n+329 }\n+330 return NodeTransformation::transform\n+(source_ptr,transformation,children_storage);\n+331 }\n+332\n+333 // Transform an instance of source tree.\n+334 static transformed_type transform(std::shared_ptr<const Source> source_ptr,\n+const Transformation& transformation)\n+335 {\n+336 auto children_storage = node_storage_provider<std::\n+shared_ptr<transformed_child_type>>(source_ptr->degree());\n+337 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n+338 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source_ptr->childStorage(k),transformation);\n+339 }\n+340 return NodeTransformation::transform\n+(source_ptr,transformation,children_storage);\n+341 }\n+342\n+343 // Transform an instance of source tree ptr.\n+344 static transformed_storage_type transform_storage(std::shared_ptr<const\n+Source> source_ptr, Transformation& transformation)\n+345 {\n+346 auto children_storage =\n+node_storage_provider<transformed_child_storage_type>(source_ptr->degree());\n+347 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n+348 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source_ptr->childStorage(k),transformation);\n+349 }\n+350 return NodeTransformation::transform_storage\n+(source_ptr,transformation,children_storage);\n+351 }\n+352\n+353 // Transform an instance of source tree ptr.\n+354 static transformed_storage_type transform_storage(std::shared_ptr<const\n+Source> source_ptr, const Transformation& transformation)\n+355 {\n+356 auto children_storage =\n+node_storage_provider<transformed_child_storage_type>(source_ptr->degree());\n+357 for (std::size_t k = 0; k < source_ptr->degree(); ++k) {\n+358 children_storage[k] = ChildTreeTransformation::transform_storage\n+(source_ptr->childStorage(k),transformation);\n+359 }\n+360 return NodeTransformation::transform_storage\n+(source_ptr,transformation,children_storage);\n+361 }\n+362\n+363 };\n+364 } // namespace Impl\n+365\n+366 // Recursive version of the PowerNode transformation for static nodes.\n+367 template<typename Source, typename Transformation>\n+368 struct TransformTree<Source,Transformation,PowerNodeTag,true>\n+369 : public Impl::\n+RecursivePowerTransformTree<Source,Transformation,PowerNodeTag>\n+370 {};\n+371\n+372 // Recursive version of the DynamicPowerNode transformation for static\n+nodes.\n+373 template<typename Source, typename Transformation>\n+374 struct TransformTree<Source,Transformation,DynamicPowerNodeTag,true>\n+375 : public Impl::\n+RecursivePowerTransformTree<Source,Transformation,DynamicPowerNodeTag>\n+376 {};\n+377\n+378 // non-recursive version of the PowerNode transformation.\n+379 template<typename S, typename T>\n+380 struct TransformTree<S,T,PowerNodeTag,false>\n+381 : public TransformTreeNonRecursive<S,T>\n+382 {};\n+383\n+384 // non-recursive version of the DynamicPowerNodeTag transformation.\n+385 template<typename S, typename T>\n+386 struct TransformTree<S,T,DynamicPowerNodeTag,false>\n+387 : public TransformTreeNonRecursive<S,T>\n+388 {};\n+389\n+390 // helper struct that does the actual transformation for a composite node.\n+We need this additional struct\n+391 // to extract the template argument list with the types of all children\n+from the node, which we cannot do\n+392 // directly in the transformation<> template, as the type passed to\n+transformation<> will usually be a\n+393 // derived type and will normally have more template arguments than just\n+the children. This declaration\n+394 // just introduces the type of the helper struct, we always instantiate the\n+specialization defined below;\n+395 template<typename S, typename Children, typename T>\n+396 struct transform_composite_node;\n+397\n+398 // specialized version of the helper struct which extracts the template\n+argument list with the children from\n+399 // its second template parameter, which has to be CompositeNode::\n+ChildTypes. Apart from that, the struct is\n+400 // similar to the one for a PowerNode, but it obviously delegates\n+transformation of the children to the TMP.\n+401 template<typename S, typename T, typename... C>\n+402 struct transform_composite_node<S,std::tuple<C...>,T>\n+403 {\n+404\n+405 // transformed type, using the same nested struct trick as the PowerNode\n+406 typedef ImplementationTag<S> Tag;\n+407 typedef typename LookupNodeTransformation<S,T,Tag>::type\n+NodeTransformation;\n+408 typedef typename NodeTransformation::template _\br_\be_\bs_\bu_\bl_\bt<typename\n+TransformTree<C,\n+409 T,\n+410 NodeTag<C>,\n+411 LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive\n+412 >::transformed_type...\n+413 >::type transformed_type;\n+414\n+415 typedef typename NodeTransformation::template _\br_\be_\bs_\bu_\bl_\bt<typename\n+TransformTree<C,\n+416 T,\n+417 NodeTag<C>,\n+418 LookupNodeTransformation<C,T,ImplementationTag<C>>::type::recursive\n+419 >::transformed_type...\n+420 >::storage_type transformed_storage_type;\n+421\n+422 // Retrieve the transformation descriptor for the child with index i.\n+423 // This little helper improves really improves the readability of the\n+424 // transformation functions.\n+425 template<std::size_t i>\n+426 struct ChildTransformation\n+427 : public TransformTree<typename S::template Child<i>::Type,\n+428 T,\n+429 NodeTag<typename S::template Child<i>::Type>,\n+430 LookupNodeTransformation<\n+431 typename S::template Child<i>::Type,\n+432 T,\n+433 ImplementationTag<typename S::template Child<i>::Type>\n+434 >::type::recursive\n+435 >\n+436 {};\n+437\n+438 template<std::size_t i, typename Tuple, typename Value>\n+439 static void setElement(Tuple& tuple, Value&& value)\n+440 {\n+441 std::get<i>(tuple) = std::forward<Value>(value);\n+442 }\n+443\n+444 template<typename Trafo, std::size_t... i>\n+445 static transformed_type transform(const S& s, Trafo&& t, std::\n+index_sequence<i...> indices)\n+446 {\n+447 std::tuple<typename ChildTransformation<i>::transformed_storage_type...>\n+storage;\n+448 Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage,\n+ChildTransformation<i>::transform_storage(s.template childStorage<i>(), std::\n+forward<Trafo>(t))),0)...});\n+449 return NodeTransformation::transform(s, std::forward<Trafo>(t), std::get<i>\n+(storage)...);\n+450 }\n+451\n+452 template<typename Trafo, std::size_t... i>\n+453 static transformed_storage_type transform_storage(std::shared_ptr<const S>\n+sp, Trafo&& t, std::index_sequence<i...> indices)\n+454 {\n+455 std::tuple<typename ChildTransformation<i>::transformed_storage_type...>\n+storage;\n+456 Dune::Hybrid::Impl::evaluateFoldExpression<int>({(setElement<i>(storage,\n+ChildTransformation<i>::transform_storage(sp->template childStorage<i>(), std::\n+forward<Trafo>(t))),0)...});\n+457 return NodeTransformation::transform_storage(sp, std::forward<Trafo>(t),\n+std::get<i>(storage)...);\n+458 }\n+459 };\n+460\n+461\n+462 // the specialization of transformation<> for the CompositeNode. This just\n+extracts the\n+463 // CompositeNode::ChildTypes member and forwards to the helper struct\n+464 template<typename S, typename T>\n+465 struct TransformTree<S,T,CompositeNodeTag,true>\n+466 {\n+467\n+468 private:\n+469\n+470 typedef typename S::ChildTypes ChildTypes;\n+471\n+472 static auto child_indices()\n+473 {\n+474 return std::make_index_sequence<S::degree()>();\n+475 }\n+476\n+477 public:\n+478\n+479 typedef typename transform_composite_node<S,ChildTypes,T>::transformed_type\n+transformed_type;\n+480 typedef typename transform_composite_node<S,ChildTypes,T>::\n+transformed_storage_type transformed_storage_type;\n+481\n+482 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, T& t)\n+483 {\n+484 return transform_composite_node<S,ChildTypes,T>::transform\n+(s,t,child_indices());\n+485 }\n+486\n+487 static transformed_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm(const S& s, const T& t)\n+488 {\n+489 return transform_composite_node<S,ChildTypes,T>::transform\n+(s,t,child_indices());\n+490 }\n+491\n+492 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n+sp, T& t)\n+493 {\n+494 return transform_composite_node<S,ChildTypes,T>::transform_storage\n+(sp,t,child_indices());\n+495 }\n+496\n+497 static transformed_storage_type _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be(std::shared_ptr<const S>\n+sp, const T& t)\n+498 {\n+499 return transform_composite_node<S,ChildTypes,T>::transform_storage\n+(sp,t,child_indices());\n+500 }\n+501\n+502 };\n+503\n+504 // non-recursive version of the CompositeNode transformation.\n+505 template<typename S, typename T>\n+506 struct TransformTree<S,T,CompositeNodeTag,false>\n+507 : public TransformTreeNonRecursive<S,T>\n+508 {};\n+509\n+510#endif // DOXYGEN\n+511\n+513\n+514 } // namespace TypeTree\n+515} //namespace Dune\n+516\n+517#endif // DUNE_TYPETREE_TRANSFORMATION_HH\n _\bt_\by_\bp_\be_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\be_\bs_\bu_\bl_\bt\n+static const result_type result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n _\bu_\bt_\bi_\bl_\bi_\bt_\by_\b._\bh_\bh\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+void registerNodeTransformation(SourceNode *, Transformation *, Tag *)\n+Register transformation descriptor to transform SourceNode with Transformation.\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-Collect multiple instances of type T within a dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n-static const bool isPower\n-Mark this class as a power in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-std::vector< ChildStorageType > NodeStorage\n-The type used for storing the children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n-const NodeStorage & nodeStorage() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-ChildConstStorageType childStorage(std::size_t i) const\n-Returns the storage of the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-const ChildType & child(std::size_t i) const\n-Returns the i-th child (const version).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be\n-std::shared_ptr< T > ChildStorageType\n-The storage type of each child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-DynamicPowerNode(T &t1, T &t2,...)\n-Initialize all children with the passed-in objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bC_\bo_\bn_\bs_\bt_\bS_\bt_\bo_\br_\ba_\bg_\be_\bT_\by_\bp_\be\n-std::shared_ptr< const T > ChildConstStorageType\n-The const version of the storage type of each child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-DynamicPowerNode(NodeStorage children)\n-Initialize the DynamicPowerNode with a copy of the passed-in storage type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-DynamicPowerNodeTag NodeTag\n-The type tag that describes the node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n-T ChildType\n-The type of each child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, ChildType &t)\n-Sets the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, ChildStorageType st)\n-Sets the stored value representing the i-th child to the passed-in value.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-DynamicPowerNode(std::size_t size)\n-Construct a node with the given number of children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n-static const bool isComposite\n-Mark this class as a non composite in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n-void setChild(std::size_t i, ChildType &&t)\n-Store the passed value in i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ChildType & child(std::size_t i)\n-Returns the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n-std::size_t degree() const\n-The number of children.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n-ChildStorageType childStorage(std::size_t i)\n-Returns the storage of the i-th child.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-static const bool isLeaf\n-Mark this class as non leaf in the dune-typetree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dynamicpowernode.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be\n-DynamicPowerNode()=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n-Tag designating a power node with runtime degree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be\n+Transform a TypeTree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bT_\by_\bp_\be\n+type Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(std::shared_ptr< const SourceTree > sp,\n+Transformation &t)\n+Apply transformation to an existing tree s.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(std::shared_ptr< const SourceTree > sp, const\n+Transformation &t=Transformation())\n+Apply transformation to an existing tree s.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(const SourceTree &s, Transformation &t)\n+Apply transformation to an existing tree s.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\by_\bp_\be\n+transformed_type type\n+The type of the transformed tree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm\n+static transformed_type transform(const SourceTree &s, const Transformation\n+&t=Transformation())\n+Apply transformation to an existing tree s.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static transformed_storage_type transform_storage(std::shared_ptr< const\n+SourceTree > sp, const Transformation &t=Transformation())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\b__\bs_\bt_\bo_\br_\ba_\bg_\be\n+static transformed_storage_type transform_storage(std::shared_ptr< const\n+SourceTree > sp, Transformation &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b__\bi_\bf_\b__\bm_\be_\bt_\ba_\b__\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Meta function that evaluates its argument iff it inherits from meta_function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn typetraits.hh:142\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00080.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00080.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: traversal.hh File Reference</title>\n+<title>dune-typetree: proxynode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,78 +70,61 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#typedef-members\">Typedefs</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">traversal.hh File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> |\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">proxynode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <utility></code><br />\n-<code>#include <dune/common/hybridutilities.hh></code><br />\n+<div class=\"textblock\"><code>#include <type_traits></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <dune/common/shared_ptr.hh></code><br />\n+<code>#include <dune/common/indices.hh></code><br />\n <code>#include <dune/common/std/type_traits.hh></code><br />\n-<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/childextraction.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code><br />\n-<code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code><br />\n </div>\n <p><a href=\"a00080_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01300.html\">Dune::TypeTree::StaticChildAccessors< ProxiedNode ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin class providing methods for child access with compile-time parameter. <a href=\"a01300.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01308.html\">Dune::TypeTree::StaticChildAccessors< ProxiedNode >::Child< k ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01308.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01312.html\">Dune::TypeTree::DynamicChildAccessors< ProxiedNode ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Mixin class providing methods for child access with run-time parameter. <a href=\"a01312.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01320.html\">Dune::TypeTree::ProxyNodeBase< Node, LeafNodeTag ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01240.html\" title=\"Base class for leaf nodes in a dune-typetree.\">LeafNode</a>. <a href=\"a01320.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01324.html\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01076.html\" title=\"Base class for composite nodes based on variadic templates.\">CompositeNode</a>. <a href=\"a01324.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01328.html\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01288.html\" title=\"Collect k instances of type T within a dune-typetree.\">PowerNode</a>. <a href=\"a01328.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01332.html\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\"><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01084.html\" title=\"Collect multiple instances of type T within a dune-typetree.\">DynamicPowerNode</a>. <a href=\"a01332.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01296.html\">Dune::TypeTree::ProxyNode< Node ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for nodes acting as a proxy for an existing node. <a href=\"a01296.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a00102\" id=\"r_a00102\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html\">Dune::TypeTree::Detail</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:a199ef6ea1f4fb18e8c5789ca1aab091c\" id=\"r_a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree > </td></tr>\n-<tr class=\"memitem:a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">Dune::TypeTree::Detail::DynamicTraversalConcept</a> = decltype((std::declval< Tree >().<a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">degree</a>(), std::declval< Tree >().<a class=\"el\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>(0u)))</td></tr>\n-<tr class=\"separator:a199ef6ea1f4fb18e8c5789ca1aab091c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a2eab71f00fba61df87a3c0f8872a2a44\" id=\"r_a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree > </td></tr>\n-<tr class=\"memitem:a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">Dune::TypeTree::Detail::StaticTraversalConcept</a> = decltype((std::integral_constant< std::size_t, Tree::degree()>{}))</td></tr>\n-<tr class=\"separator:a2eab71f00fba61df87a3c0f8872a2a44\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:aac044f60050eb4fb71c685c68a187e02\" id=\"r_aac044f60050eb4fb71c685c68a187e02\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, class Prefix , std::enable_if_t< Tree::isLeaf, int > = 0> </td></tr>\n-<tr class=\"memitem:aac044f60050eb4fb71c685c68a187e02\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Dune::TypeTree::Detail::leafTreePathTuple</a> (Prefix prefix)</td></tr>\n-<tr class=\"separator:aac044f60050eb4fb71c685c68a187e02\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:addc8106816a6c1ab2870f3c34398a7df\" id=\"r_addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, class Prefix , std::size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and(pathType!=<a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>))), int > = 0> </td></tr>\n-<tr class=\"memitem:addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#addc8106816a6c1ab2870f3c34398a7df\">Dune::TypeTree::Detail::leafTreePathTuple</a> (Prefix prefix, std::index_sequence< indices... >)</td></tr>\n-<tr class=\"separator:addc8106816a6c1ab2870f3c34398a7df\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a6dd219b33e36d07c725b68addf01ead7\" id=\"r_a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memTemplParams\" colspan=\"2\">template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T >::isLeaf, int > = 0> </td></tr>\n-<tr class=\"memitem:a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Dune::TypeTree::Detail::applyToTree</a> (T &&tree, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V &&visitor)</td></tr>\n-<tr class=\"separator:a6dd219b33e36d07c725b68addf01ead7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a168e4cc76ad223e23b07ce86e81318ea\" id=\"r_a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memTemplParams\" colspan=\"2\">template<class T , class TreePath , class PreFunc , class LeafFunc , class PostFunc > </td></tr>\n-<tr class=\"memitem:a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Dune::TypeTree::Detail::forEachNode</a> (T &&tree, TreePath <a class=\"el\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc &&postFunc)</td></tr>\n-<tr class=\"separator:a168e4cc76ad223e23b07ce86e81318ea\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga40f2a5d5435d0ae5ff375e2d54beb973\" id=\"r_ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType = TreePathType::dynamic> </td></tr>\n-<tr class=\"memitem:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">constexpr auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">Dune::TypeTree::leafTreePathTuple</a> ()</td></tr>\n-<tr class=\"memdesc:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create tuple of tree paths to leafs. <br /></td></tr>\n-<tr class=\"separator:ga40f2a5d5435d0ae5ff375e2d54beb973\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gafebbce1d18f7ddd62e267df3de139334\" id=\"r_gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memTemplParams\" colspan=\"2\">template<typename Tree , typename Visitor > </td></tr>\n-<tr class=\"memitem:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a> (Tree &&tree, Visitor &&visitor)</td></tr>\n-<tr class=\"memdesc:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply visitor to <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n-<tr class=\"separator:gafebbce1d18f7ddd62e267df3de139334\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ga29b6b44967c09f379358b0264124c0a7\" id=\"r_ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class NodeFunc > </td></tr>\n-<tr class=\"memitem:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">Dune::TypeTree::forEachNode</a> (Tree &&tree, NodeFunc &&nodeFunc)</td></tr>\n-<tr class=\"memdesc:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Traverse tree and visit each node. <br /></td></tr>\n-<tr class=\"separator:ga29b6b44967c09f379358b0264124c0a7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:gad2f9c441b6882fcd11419500df8a56ec\" id=\"r_gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , class LeafFunc > </td></tr>\n-<tr class=\"memitem:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">Dune::TypeTree::forEachLeafNode</a> (Tree &&tree, LeafFunc &&leafFunc)</td></tr>\n-<tr class=\"memdesc:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Traverse tree and visit each leaf node. <br /></td></tr>\n-<tr class=\"separator:gad2f9c441b6882fcd11419500df8a56ec\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,73 +1,49 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-traversal.hh File Reference\n-#include <utility>\n-#include <dune/common/hybridutilities.hh>\n-#include <dune/common/std/type_traits.hh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+proxynode.hh File Reference\n+#include <type_traits>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n+#include <dune/common/shared_ptr.hh>\n+#include <dune/common/indices.hh>\n+#include <dune/common/std/type_traits.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0 Mixin class providing methods for child access with compile-time\n+ parameter. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n+\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b<_\b _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0 Mixin class providing methods for child access with run-time\n+ parameter. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n+\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bL_\be_\ba_\bf_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n+\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n+\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>\n+\u00a0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be base class for _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b _\b>\n+\u00a0 Base class for nodes acting as a proxy for an existing node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template<class Tree >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((std::\n- declval< Tree >()._\bd_\be_\bg_\br_\be_\be(), std::declval< Tree >()._\bc_\bh_\bi_\bl_\bd(0u)))\n-\u00a0\n-template<class Tree >\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((std::\n- integral_constant< std::size_t, Tree::degree()>{}))\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix , std::\n-enable_if_t< Tree::isLeaf, int > = 0>\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be (Prefix prefix)\n-\u00a0\n-template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix , std::\n-size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and\n-(pathType!=_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc))), int > = 0>\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be (Prefix prefix, std::\n- index_sequence< indices... >)\n-\u00a0\n-template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T\n->::isLeaf, int > = 0>\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (T &&tree, TreePath\n- _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V &&visitor)\n-\u00a0\n-template<class T , class TreePath , class PreFunc , class LeafFunc , class\n-PostFunc >\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be (T &&tree, TreePath\n- _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc\n- &&postFunc)\n-\u00a0\n-template<class Tree , _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType = TreePathType::dynamic>\n-constexpr auto\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be ()\n-\u00a0 Create tuple of tree paths to leafs.\n-\u00a0\n-template<typename Tree , typename Visitor >\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be (Tree &&tree, Visitor &&visitor)\n-\u00a0 Apply visitor to _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n-\u00a0\n-template<class Tree , class NodeFunc >\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be (Tree &&tree, NodeFunc &&nodeFunc)\n-\u00a0 Traverse tree and visit each node.\n-\u00a0\n-template<class Tree , class LeafFunc >\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be (Tree &&tree, LeafFunc\n- &&leafFunc)\n-\u00a0 Traverse tree and visit each leaf node.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00080_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00080_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: traversal.hh Source File</title>\n+<title>dune-typetree: proxynode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,281 +74,397 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">traversal.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">proxynode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00080.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_PROXYNODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_PROXYNODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <utility></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <dune/common/hybridutilities.hh></span></div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/childextraction.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00056.html\">dune/typetree/nodetags.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00041.html\">dune/typetree/treepath.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00011.html\">dune/typetree/visitor.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <dune/common/std/type_traits.hh></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> <span class=\"keyword\">struct </span>NoOp</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> <span class=\"keyword\">class </span>ProxyNode;</div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ProxiedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00029\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html\"> 29</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a></div>\n <div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span>... T></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">void</span> operator()(T&&...)<span class=\"keyword\"> const </span>{ <span class=\"comment\">/* do nothing */</span> }</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> };</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> <span class=\"keyword\">namespace </span>Detail {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"comment\">// SFINAE template check that Tree has a degree() function and a child() function accepting integer indices</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\"> 40</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">DynamicTraversalConcept</a> = <span class=\"keyword\">decltype</span>((</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> std::declval<Tree>().degree(),</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> std::declval<Tree>().child(0u)</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> ));</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"comment\">// SFINAE template check that Tree has static (constexpr) function Tree::degree()</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\"> 47</a></span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">StaticTraversalConcept</a> = <span class=\"keyword\">decltype</span>((</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> std::integral_constant<std::size_t, Tree::degree()>{}</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> ));</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> std::enable_if_t<Tree::isLeaf, int> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\"> 54</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix)</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keywordflow\">return</span> std::make_tuple(prefix);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> std::enable_if_t<not Tree::isLeaf, int> = 0></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix);</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix, std::size_t... indices,</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> std::enable_if_t<(Tree::isComposite or (Tree::isPower and (pathType!=<a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>))), <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#addc8106816a6c1ab2870f3c34398a7df\"> 65</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix, std::index_sequence<indices...>)</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keywordflow\">return</span> std::tuple_cat(<a class=\"code hl_function\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Detail::leafTreePathTuple</a><<a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">TypeTree::Child<Tree,indices></a>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(prefix, Dune::index_constant<indices>{}))...);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix, std::size_t... indices,</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> std::enable_if_t<(Tree::isPower and (pathType==<a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>)), <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix, std::index_sequence<indices...>)</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> {</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> <span class=\"keywordflow\">return</span> std::tuple_cat(<a class=\"code hl_function\" href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Detail::leafTreePathTuple</a><<a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">TypeTree::Child<Tree,indices></a>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(prefix, indices))...);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>Tree, <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> pathType, <span class=\"keyword\">class </span>Prefix,</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> std::enable_if_t<not Tree::isLeaf, int>></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>(Prefix prefix)</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> {</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keywordflow\">return</span> Detail::leafTreePathTuple<Tree, pathType>(prefix, std::make_index_sequence<Tree::degree()>{});</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> }</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> <span class=\"comment\">/* The signature is the same as for the public applyToTree</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span><span class=\"comment\"> * function in Dune::Typetree, despite the additionally passed</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span><span class=\"comment\"> * treePath argument. The path passed here is associated to</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span><span class=\"comment\"> * the tree and the relative paths of the children (wrt. to tree)</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span><span class=\"comment\"> * are appended to this. Hence the behavior of the public function</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span><span class=\"comment\"> * is resembled by passing an empty treePath.</span></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span><span class=\"comment\"> * This is the overload for leaf traversal</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> std::enable_if_t<std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\"> 97</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> {</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"> 99</span> visitor.leaf(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"> 102</span> <span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"> 103</span><span class=\"comment\"> * This is the general overload doing child traversal.</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"> 105</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class </span>T, <span class=\"keyword\">class </span>TreePath, <span class=\"keyword\">class </span>V,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> std::enable_if_t<not std::decay_t<T>::isLeaf, <span class=\"keywordtype\">int</span>> = 0></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, V&& visitor)</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> {</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> <span class=\"keyword\">using </span>Tree = std::remove_reference_t<T>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> <span class=\"keyword\">using </span>Visitor = std::remove_reference_t<V>;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> visitor.pre(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"> 112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> <span class=\"comment\">// check which type of traversal is supported by the tree</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<DynamicTraversalConcept,Tree>;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<StaticTraversalConcept,Tree>;</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<ProxiedNode>::type>::value;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">struct </span>lazy_enabled</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> value = !proxiedNodeIsConst;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> };</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01296.html\">ProxyNode<ProxiedNode></a> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> node ()</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> {</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> }</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>& node ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><span class=\"keyword\">const </span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> }</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01308.html\"> 58</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01308.html\">Child</a></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> : <span class=\"keyword\">public</span> ProxiedNode::template <a class=\"code hl_struct\" href=\"a01308.html\">Child</a><k></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> {};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\"> 71</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> {</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template child<k>();</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\"> 81</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template child<k>();</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\"> 92</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\">childStorage</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template childStorage<k>();</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\"> 105</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"> 106</span> {</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keywordflow\">return</span> node().proxiedNode().template childStorage<k>();</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"> 108</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"> 109</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"> 111</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k, <span class=\"keyword\">class</span> ProxyChild></div>\n+<div class=\"foldopen\" id=\"foldopen00112\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\"> 112</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\">setChild</a> (ProxyChild&& <a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<lazy_enabled<k>::value,<span class=\"keywordtype\">void</span>*>::type = 0)</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> {</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"> 114</span> node().proxiedNode().template setChild<k>(std::forward<ProxyChild>(<a class=\"code hl_function\" href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">child</a>));</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"> 115</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> <span class=\"comment\">// the visitor may specify preferred dynamic traversal</span></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> <span class=\"keyword\">using </span>preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"comment\">// create a dynamic or static index range</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"> 124</span> <span class=\"keyword\">auto</span> indices = [&]{</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(preferDynamicTraversal::value && allowDynamicTraversal::value)</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span> <span class=\"keywordflow\">return</span> Dune::range(std::size_t(tree.degree()));</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> <span class=\"keywordflow\">else</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"keywordflow\">return</span> Dune::range(tree.degree());</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> }();</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value || allowStaticTraversal::value) {</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> <span class=\"keyword\">auto</span>&& <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a> = tree.child(i);</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> <span class=\"keyword\">using </span><a class=\"code hl_typedef\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a> = std::decay_t<<span class=\"keyword\">decltype</span>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>)>;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> visitor.beforeChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> <span class=\"comment\">// This requires that visitor.in(...) can always be instantiated,</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"comment\">// even if there's a single child only.</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keywordflow\">if</span> (i>0)</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> visitor.in(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> visitChild = Visitor::template VisitChild<Tree,Child,TreePath>::value;</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(visitChild) {</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">applyToTree</a>(<a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, childTreePath, visitor);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> }</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> visitor.afterChild(tree, <a class=\"code hl_function\" href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">child</a>, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> });</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> }</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> visitor.post(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> }</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> <span class=\"comment\">/* Traverse tree and visit each node. The signature is the same</span></div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span><span class=\"comment\"> * as for the public forEachNode function in Dune::Typtree,</span></div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span><span class=\"comment\"> * despite the additionally passed treePath argument. The path</span></div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"> 158</span><span class=\"comment\"> * passed here is associated to the tree and the relative</span></div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span><span class=\"comment\"> * paths of the children (wrt. to tree) are appended to this.</span></div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span><span class=\"comment\"> * Hence the behavior of the public function is resembled</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span><span class=\"comment\"> * by passing an empty treePath.</span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span><span class=\"comment\"> */</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> TreePath, <span class=\"keyword\">class</span> PreFunc, <span class=\"keyword\">class</span> LeafFunc, <span class=\"keyword\">class</span> PostFunc></div>\n-<div class=\"foldopen\" id=\"foldopen00164\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\"> 164</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(T&& tree, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, PreFunc&& preFunc, LeafFunc&& leafFunc, PostFunc&& postFunc)</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> <span class=\"keyword\">using </span>Tree = std::decay_t<T>;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"> 167</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(Tree::isLeaf) {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> leafFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> preFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> <span class=\"comment\">// check which type of traversal is supported by the tree, prefer dynamic traversal</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keyword\">using </span>allowDynamicTraversal = Dune::Std::is_detected<DynamicTraversalConcept,Tree>;</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> <span class=\"keyword\">using </span>allowStaticTraversal = Dune::Std::is_detected<StaticTraversalConcept,Tree>;</div>\n+<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\"> 117</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> ProxiedNode::NodeStorage& <a class=\"code hl_function\" href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\">nodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keywordflow\">return</span> node().proxiedNode().nodeStorage();</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"> 122</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> </div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ProxiedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html\"> 131</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a></div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><ProxiedNode></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> {</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"> 135</span> <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01296.html\">ProxyNode<ProxiedNode></a> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"> 137</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<ProxiedNode>::type>::value;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"> 138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span> node ()</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> {</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> }</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01296.html\">Node</a>& node ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast<</span><span class=\"keyword\">const </span><a class=\"code hl_class\" href=\"a01296.html\">Node</a>&<span class=\"keyword\">></span>(*this);</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> }</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"> 155</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"> 157</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"> 160</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst,</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> <span class=\"keyword\">typename</span> std::enable_if<enabled, int>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00162\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\"> 162</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> {</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keywordflow\">return</span> node().proxiedNode().child(i);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"> 165</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"> 168</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\"> 171</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\">child</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keywordflow\">return</span> node().proxiedNode().child(i);</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> }</div>\n+</div>\n <div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"> 176</span> <span class=\"comment\">// the tree must support either dynamic or static traversal</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> <span class=\"keyword\">static_assert</span>(allowDynamicTraversal::value || allowStaticTraversal::value);</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"> 179</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowDynamicTraversal::value) {</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"comment\">// Specialization for dynamic traversal</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keywordflow\">for</span> (std::size_t i = 0; i < tree.degree(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> <span class=\"keyword\">constexpr</span>(allowStaticTraversal::value) {</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> <span class=\"comment\">// Specialization for static traversal</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">auto</span> indices = std::make_index_sequence<Tree::degree()>{};</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> Hybrid::forEach(indices, [&](<span class=\"keyword\">auto</span> i) {</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> <span class=\"keyword\">auto</span> childTreePath = <a class=\"code hl_function\" href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a>(<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>, i);</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">forEachNode</a>(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> });</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> }</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"> 193</span> postFunc(tree, <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>);</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> }</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span> }</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> <span class=\"keyword\">typename</span> std::enable_if<enabled, int>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00182\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\"> 182</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\">childStorage</a> (std::size_t i)</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> {</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> <span class=\"keywordflow\">return</span> node().proxiedNode().childStorage(i);</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00194\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\"> 194</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\">childStorage</a> (std::size_t i)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"> 195</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> <span class=\"keywordflow\">return</span> node().proxiedNode().childStorage(i);</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> }</div>\n </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"> 196</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> } <span class=\"comment\">// namespace Detail</span></div>\n <div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> <span class=\"comment\">// Public Interface</span></div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> <span class=\"comment\">// ********************************************************************************</span></div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, TreePathType::Type pathType=TreePathType::dynamic></div>\n-<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\"> 218</a></span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">leafTreePathTuple</a>()</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> {</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"> 220</span> <span class=\"keywordflow\">return</span> Detail::leafTreePathTuple<std::decay_t<Tree>, pathType>(<a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>());</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> Visitor></div>\n-<div class=\"foldopen\" id=\"foldopen00239\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\"> 239</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">applyToTree</a>(Tree&& tree, Visitor&& visitor)</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"> 200</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> ProxyChild, <span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n+<div class=\"foldopen\" id=\"foldopen00201\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\"> 201</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\">setChild</a> (std::size_t i, ProxyChild&& <a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<enabled,void*>::type = 0)</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"> 202</span> {</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"> 203</span> node().proxiedNode().setChild(i, std::forward<ProxyChild>(<a class=\"code hl_function\" href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">child</a>));</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> NodeTag></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01316.html\"> 210</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a>;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> </div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"> 213</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00214\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01320.html\"> 214</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><Node,<a class=\"code hl_struct\" href=\"a01248.html\">LeafNodeTag</a>></div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"> 215</span> {</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00220\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html\"> 220</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a>></div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><Node></div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"> 222</span> {</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\"> 223</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildTypes <a class=\"code hl_typedef\" href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\">ChildTypes</a>;</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\"> 224</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"> 226</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html\"> 229</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01252.html\">PowerNodeTag</a>></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node></div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> {</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\"> 232</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildType <a class=\"code hl_typedef\" href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\">ChildType</a>;</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\"> 233</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"> 235</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00238\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html\"> 238</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><<a class=\"code hl_class\" href=\"a01296.html\">Node</a>,<a class=\"code hl_struct\" href=\"a01256.html\">DynamicPowerNodeTag</a>></div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node></div>\n <div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"> 240</span> {</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> <a class=\"code hl_function\" href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Detail::applyToTree</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), visitor);</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"> 253</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> NodeFunc></div>\n-<div class=\"foldopen\" id=\"foldopen00254\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\"> 254</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">forEachNode</a>(Tree&& tree, NodeFunc&& nodeFunc)</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\"> 241</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::ChildType <a class=\"code hl_typedef\" href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\">ChildType</a>;</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01332.html#a7564689493e427ad4869491a4ef06727\"> 242</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Node::NodeStorage <a class=\"code hl_typedef\" href=\"a01332.html#a7564689493e427ad4869491a4ef06727\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"> 244</span> </div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"> 252</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node></div>\n+<div class=\"foldopen\" id=\"foldopen00253\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html\"> 253</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01296.html\">ProxyNode</a></div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"a01316.html\">ProxyNodeBase</a><Node,NodeTag<Node>></div>\n <div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> {</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Detail::forEachNode</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), nodeFunc, nodeFunc, NoOp{});</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">template</span><<span class=\"keyword\">class</span> Tree, <span class=\"keyword\">class</span> LeafFunc></div>\n-<div class=\"foldopen\" id=\"foldopen00269\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\"> 269</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">forEachLeafNode</a>(Tree&& tree, LeafFunc&& leafFunc)</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> {</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> <a class=\"code hl_function\" href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Detail::forEachNode</a>(tree, <a class=\"code hl_function\" href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">hybridTreePath</a>(), NoOp{}, leafFunc, NoOp{});</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> proxiedNodeIsConst = std::is_const<typename std::remove_reference<Node>::type>::value;</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"> 257</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> N></div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">using </span>HasStaticDegree = index_constant<N::degree()>;</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> </div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> N></div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a9250e9e54ae16676cda0a71c6df6cccd\"> 262</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keywordtype\">bool</span> hasStaticDegree = Std::is_detected<HasStaticDegree, N>::value;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"> 263</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> <span class=\"comment\">// accessor mixins need to be friends for access to proxiedNode()</span></div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01300.html\">StaticChildAccessors</a><Node>;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span> <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01312.html\">DynamicChildAccessors</a><Node>;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\"> 270</a></span> <span class=\"keyword\">typedef</span> Node <a class=\"code hl_typedef\" href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\">ProxiedNode</a>;</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> </div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\"> 272</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag<Node></a> <a class=\"code hl_typedef\" href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\">NodeTag</a>;</div>\n <div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> </div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"> 277</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"> 278</span> </div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRAVERSAL_HH</span></div>\n-<div class=\"ttc\" id=\"aa00011_html\"><div class=\"ttname\"><a href=\"a00011.html\">visitor.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00041_html\"><div class=\"ttname\"><a href=\"a00041.html\">treepath.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">childextraction.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00056_html\"><div class=\"ttname\"><a href=\"a00056.html\">nodetags.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00090_html_ga29b6b44967c09f379358b0264124c0a7\"><div class=\"ttname\"><a href=\"a00090.html#ga29b6b44967c09f379358b0264124c0a7\">Dune::TypeTree::forEachNode</a></div><div class=\"ttdeci\">void forEachNode(Tree &&tree, NodeFunc &&nodeFunc)</div><div class=\"ttdoc\">Traverse tree and visit each node.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:254</div></div>\n-<div class=\"ttc\" id=\"aa00090_html_ga40f2a5d5435d0ae5ff375e2d54beb973\"><div class=\"ttname\"><a href=\"a00090.html#ga40f2a5d5435d0ae5ff375e2d54beb973\">Dune::TypeTree::leafTreePathTuple</a></div><div class=\"ttdeci\">constexpr auto leafTreePathTuple()</div><div class=\"ttdoc\">Create tuple of tree paths to leafs.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:218</div></div>\n-<div class=\"ttc\" id=\"aa00090_html_gad2f9c441b6882fcd11419500df8a56ec\"><div class=\"ttname\"><a href=\"a00090.html#gad2f9c441b6882fcd11419500df8a56ec\">Dune::TypeTree::forEachLeafNode</a></div><div class=\"ttdeci\">void forEachLeafNode(Tree &&tree, LeafFunc &&leafFunc)</div><div class=\"ttdoc\">Traverse tree and visit each leaf node.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:269</div></div>\n-<div class=\"ttc\" id=\"aa00090_html_gafebbce1d18f7ddd62e267df3de139334\"><div class=\"ttname\"><a href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(Tree &&tree, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:239</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_ga8136d392450f4308b90a04a143e20feb\"><div class=\"ttname\"><a href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Dune::TypeTree::Child</a></div><div class=\"ttdeci\">typename impl::_Child< Node, indices... >::type Child</div><div class=\"ttdoc\">Template alias for the type of a child node given by a list of child indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:225</div></div>\n-<div class=\"ttc\" id=\"aa00091_html_gab8f2fef526363564e7bbe91daad49b9b\"><div class=\"ttname\"><a href=\"a00091.html#gab8f2fef526363564e7bbe91daad49b9b\">Dune::TypeTree::child</a></div><div class=\"ttdeci\">ImplementationDefined child(Node &&node, Indices... indices)</div><div class=\"ttdoc\">Extracts the child of a node given by a sequence of compile-time and run-time indices.</div><div class=\"ttdef\"><b>Definition</b> childextraction.hh:128</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga05adc4d23920567c855e19dc2eb59fc3\"><div class=\"ttname\"><a href=\"a00093.html#ga05adc4d23920567c855e19dc2eb59fc3\">Dune::TypeTree::push_back</a></div><div class=\"ttdeci\">constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath< T... > &tp, std::size_t i)</div><div class=\"ttdoc\">Appends a run time index to a HybridTreePath.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:416</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_ga8d8adb5b68d9a6e529f363a10e7207d7\"><div class=\"ttname\"><a href=\"a00093.html#ga8d8adb5b68d9a6e529f363a10e7207d7\">Dune::TypeTree::hybridTreePath</a></div><div class=\"ttdeci\">constexpr auto hybridTreePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:312</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\"> 275</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\">isLeaf</a> = Node::isLeaf;</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"> 276</span> </div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\"> 278</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\">isPower</a> = Node::isPower;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> </div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\"> 281</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\">isComposite</a> = Node::isComposite;</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"> 282</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"> 283</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>N = Node,</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> std::enable_if_t<hasStaticDegree<N>, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00285\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\"> 285</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\">degree</a> ()</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> {</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"> 287</span> <span class=\"keywordflow\">return</span> N::degree();</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"> 288</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"> 289</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class </span>N = Node,</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::enable_if_t<not hasStaticDegree<N>, <span class=\"keywordtype\">int</span>> = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00292\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a773824f1bc058297482fd93269ce227a\"> 292</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01296.html#a773824f1bc058297482fd93269ce227a\">degree</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"> 293</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"> 294</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">proxiedNode</a>().degree();</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\"> 295</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"> 296</span> </div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"> 297</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"> 298</span> <span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"> 304</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n+<div class=\"foldopen\" id=\"foldopen00306\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\"> 306</a></span> <a class=\"code hl_function\" href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">proxiedNode</a> ()</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"> 307</span> {</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"> 308</span> <span class=\"keywordflow\">return</span> *_node;</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"> 309</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\"> 312</a></span> <span class=\"keyword\">const</span> Node& <a class=\"code hl_function\" href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\">proxiedNode</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"> 313</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"> 314</span> <span class=\"keywordflow\">return</span> *_node;</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"> 315</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"> 316</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"> 318</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !proxiedNodeIsConst></div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,std::shared_ptr<Node> >::type</div>\n+<div class=\"foldopen\" id=\"foldopen00320\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\"> 320</a></span> <a class=\"code hl_function\" href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\">proxiedNodeStorage</a> ()</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> {</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> <span class=\"keywordflow\">return</span> _node;</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\"> 326</a></span> std::shared_ptr<const Node> <a class=\"code hl_function\" href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\">proxiedNodeStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> <span class=\"keywordflow\">return</span> _node;</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> </div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> </div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00336\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\"> 336</a></span> <a class=\"code hl_function\" href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\">ProxyNode</a> (Node& node)</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"> 337</span> : _node(stackobject_to_shared_ptr(node))</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"> 338</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\"> 339</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00340\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\"> 340</a></span> <a class=\"code hl_function\" href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\">ProxyNode</a> (std::shared_ptr<Node> node)</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"> 341</span> : _node(std::move(node))</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"> 343</span> </div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> </div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> </div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"> 348</span> std::shared_ptr<Node> _node;</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"> 350</span> </div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"> 352</span> </div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"> 353</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"> 354</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"> 355</span> </div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"> 356</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_PROXYNODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00092_html_ga69a1959f7e199cc23ff490487dc683b9\"><div class=\"ttname\"><a href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">Dune::TypeTree::NodeTag</a></div><div class=\"ttdeci\">typename std::decay_t< Node >::NodeTag NodeTag</div><div class=\"ttdoc\">Returns the node tag of the given Node.</div><div class=\"ttdef\"><b>Definition</b> nodeinterface.hh:70</div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a168e4cc76ad223e23b07ce86e81318ea\"><div class=\"ttname\"><a href=\"a00102.html#a168e4cc76ad223e23b07ce86e81318ea\">Dune::TypeTree::Detail::forEachNode</a></div><div class=\"ttdeci\">void forEachNode(T &&tree, TreePath treePath, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc &&postFunc)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:164</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a199ef6ea1f4fb18e8c5789ca1aab091c\"><div class=\"ttname\"><a href=\"a00102.html#a199ef6ea1f4fb18e8c5789ca1aab091c\">Dune::TypeTree::Detail::DynamicTraversalConcept</a></div><div class=\"ttdeci\">decltype((std::declval< Tree >().degree(), std::declval< Tree >().child(0u))) DynamicTraversalConcept</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:43</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a2eab71f00fba61df87a3c0f8872a2a44\"><div class=\"ttname\"><a href=\"a00102.html#a2eab71f00fba61df87a3c0f8872a2a44\">Dune::TypeTree::Detail::StaticTraversalConcept</a></div><div class=\"ttdeci\">decltype((std::integral_constant< std::size_t, Tree::degree()>{})) StaticTraversalConcept</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_a6dd219b33e36d07c725b68addf01ead7\"><div class=\"ttname\"><a href=\"a00102.html#a6dd219b33e36d07c725b68addf01ead7\">Dune::TypeTree::Detail::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(T &&tree, TreePath treePath, V &&visitor)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:97</div></div>\n-<div class=\"ttc\" id=\"aa00102_html_aac044f60050eb4fb71c685c68a187e02\"><div class=\"ttname\"><a href=\"a00102.html#aac044f60050eb4fb71c685c68a187e02\">Dune::TypeTree::Detail::leafTreePathTuple</a></div><div class=\"ttdeci\">constexpr auto leafTreePathTuple(Prefix prefix)</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:54</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa01248_html\"><div class=\"ttname\"><a href=\"a01248.html\">Dune::TypeTree::LeafNodeTag</a></div><div class=\"ttdoc\">Tag designating a leaf node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:18</div></div>\n+<div class=\"ttc\" id=\"aa01252_html\"><div class=\"ttname\"><a href=\"a01252.html\">Dune::TypeTree::PowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:21</div></div>\n+<div class=\"ttc\" id=\"aa01256_html\"><div class=\"ttname\"><a href=\"a01256.html\">Dune::TypeTree::DynamicPowerNodeTag</a></div><div class=\"ttdoc\">Tag designating a power node with runtime degree.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:24</div></div>\n+<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa01296_html\"><div class=\"ttname\"><a href=\"a01296.html\">Dune::TypeTree::ProxyNode</a></div><div class=\"ttdoc\">Base class for nodes acting as a proxy for an existing node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:255</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a0e43d09ca7852c6cff4e7f9fc1ed1929\"><div class=\"ttname\"><a href=\"a01296.html#a0e43d09ca7852c6cff4e7f9fc1ed1929\">Dune::TypeTree::ProxyNode::ProxyNode</a></div><div class=\"ttdeci\">ProxyNode(Node &node)</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:336</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a39eec235919e0d128ca716e7f1bb4301\"><div class=\"ttname\"><a href=\"a01296.html#a39eec235919e0d128ca716e7f1bb4301\">Dune::TypeTree::ProxyNode::NodeTag</a></div><div class=\"ttdeci\">Dune::TypeTree::NodeTag< Node > NodeTag</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:272</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a3e24b0feb227820603f2cee4f74806a5\"><div class=\"ttname\"><a href=\"a01296.html#a3e24b0feb227820603f2cee4f74806a5\">Dune::TypeTree::ProxyNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:281</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a4ebc1c794a42b66170eafe043bb367fd\"><div class=\"ttname\"><a href=\"a01296.html#a4ebc1c794a42b66170eafe043bb367fd\">Dune::TypeTree::ProxyNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:275</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a725892f3549722c422b395ca3c2344f8\"><div class=\"ttname\"><a href=\"a01296.html#a725892f3549722c422b395ca3c2344f8\">Dune::TypeTree::ProxyNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:278</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a773824f1bc058297482fd93269ce227a\"><div class=\"ttname\"><a href=\"a01296.html#a773824f1bc058297482fd93269ce227a\">Dune::TypeTree::ProxyNode::degree</a></div><div class=\"ttdeci\">auto degree() const</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:292</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a87a5b982d768c50dcdfe6e58935d9e6a\"><div class=\"ttname\"><a href=\"a01296.html#a87a5b982d768c50dcdfe6e58935d9e6a\">Dune::TypeTree::ProxyNode::proxiedNode</a></div><div class=\"ttdeci\">std::enable_if< enabled, Node & >::type proxiedNode()</div><div class=\"ttdoc\">Returns the proxied node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:306</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a959a07afebc401315a1a872cf94a7622\"><div class=\"ttname\"><a href=\"a01296.html#a959a07afebc401315a1a872cf94a7622\">Dune::TypeTree::ProxyNode::proxiedNodeStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const Node > proxiedNodeStorage() const</div><div class=\"ttdoc\">Returns the storage of the proxied node (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:326</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\"><div class=\"ttname\"><a href=\"a01296.html#a968bc5b9a31d2ad1e79c6c9eb7c8fe2b\">Dune::TypeTree::ProxyNode::ProxiedNode</a></div><div class=\"ttdeci\">Node ProxiedNode</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:270</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_aac016f3d0dbf5ba599a749b5c1d109e6\"><div class=\"ttname\"><a href=\"a01296.html#aac016f3d0dbf5ba599a749b5c1d109e6\">Dune::TypeTree::ProxyNode::proxiedNodeStorage</a></div><div class=\"ttdeci\">std::enable_if< enabled, std::shared_ptr< Node > >::type proxiedNodeStorage()</div><div class=\"ttdoc\">Returns the storage of the proxied node.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:320</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_ab94a45822377d91e704d51f73e3e00d8\"><div class=\"ttname\"><a href=\"a01296.html#ab94a45822377d91e704d51f73e3e00d8\">Dune::TypeTree::ProxyNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:285</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_ac693971042ac6c4fcd88fc734f026c69\"><div class=\"ttname\"><a href=\"a01296.html#ac693971042ac6c4fcd88fc734f026c69\">Dune::TypeTree::ProxyNode::ProxyNode</a></div><div class=\"ttdeci\">ProxyNode(std::shared_ptr< Node > node)</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:340</div></div>\n+<div class=\"ttc\" id=\"aa01296_html_ae8ad599d06ebb27b3f18cafd012820fa\"><div class=\"ttname\"><a href=\"a01296.html#ae8ad599d06ebb27b3f18cafd012820fa\">Dune::TypeTree::ProxyNode::proxiedNode</a></div><div class=\"ttdeci\">const Node & proxiedNode() const</div><div class=\"ttdoc\">Returns the proxied node (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:312</div></div>\n+<div class=\"ttc\" id=\"aa01300_html\"><div class=\"ttname\"><a href=\"a01300.html\">Dune::TypeTree::StaticChildAccessors</a></div><div class=\"ttdoc\">Mixin class providing methods for child access with compile-time parameter.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:30</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_a0465bd204efa9b689222b3a2943d0c77\"><div class=\"ttname\"><a href=\"a01300.html#a0465bd204efa9b689222b3a2943d0c77\">Dune::TypeTree::StaticChildAccessors::child</a></div><div class=\"ttdeci\">auto & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:71</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_a33cbc09c786c2977e8641d3987c0e98e\"><div class=\"ttname\"><a href=\"a01300.html#a33cbc09c786c2977e8641d3987c0e98e\">Dune::TypeTree::StaticChildAccessors::setChild</a></div><div class=\"ttdeci\">void setChild(ProxyChild &&child, typename std::enable_if< lazy_enabled< k >::value, void * >::type=0)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:112</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_a48e590e8ed858f0dc989fa1fbd8e78eb\"><div class=\"ttname\"><a href=\"a01300.html#a48e590e8ed858f0dc989fa1fbd8e78eb\">Dune::TypeTree::StaticChildAccessors::nodeStorage</a></div><div class=\"ttdeci\">const ProxiedNode::NodeStorage & nodeStorage() const</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:117</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_a4da4d39ef89fb67364b64a42cf3a3543\"><div class=\"ttname\"><a href=\"a01300.html#a4da4d39ef89fb67364b64a42cf3a3543\">Dune::TypeTree::StaticChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:92</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_abf959440efcbef495ee7c524a8a1e5a7\"><div class=\"ttname\"><a href=\"a01300.html#abf959440efcbef495ee7c524a8a1e5a7\">Dune::TypeTree::StaticChildAccessors::child</a></div><div class=\"ttdeci\">const auto & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:81</div></div>\n+<div class=\"ttc\" id=\"aa01300_html_ad42d61a7ebb201c65f212e58e4adc653\"><div class=\"ttname\"><a href=\"a01300.html#ad42d61a7ebb201c65f212e58e4adc653\">Dune::TypeTree::StaticChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:105</div></div>\n+<div class=\"ttc\" id=\"aa01308_html\"><div class=\"ttname\"><a href=\"a01308.html\">Dune::TypeTree::StaticChildAccessors::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:60</div></div>\n+<div class=\"ttc\" id=\"aa01312_html\"><div class=\"ttname\"><a href=\"a01312.html\">Dune::TypeTree::DynamicChildAccessors</a></div><div class=\"ttdoc\">Mixin class providing methods for child access with run-time parameter.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:133</div></div>\n+<div class=\"ttc\" id=\"aa01312_html_a180603eb511bd54f88dd36798c78397f\"><div class=\"ttname\"><a href=\"a01312.html#a180603eb511bd54f88dd36798c78397f\">Dune::TypeTree::DynamicChildAccessors::child</a></div><div class=\"ttdeci\">auto & child(std::size_t i)</div><div class=\"ttdoc\">Returns the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:162</div></div>\n+<div class=\"ttc\" id=\"aa01312_html_a36a708aacc0fca38b7907f520f853e33\"><div class=\"ttname\"><a href=\"a01312.html#a36a708aacc0fca38b7907f520f853e33\">Dune::TypeTree::DynamicChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(std::size_t i) const</div><div class=\"ttdoc\">Returns the storage of the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:194</div></div>\n+<div class=\"ttc\" id=\"aa01312_html_a56532e70044f0cf99d685ef8404526ad\"><div class=\"ttname\"><a href=\"a01312.html#a56532e70044f0cf99d685ef8404526ad\">Dune::TypeTree::DynamicChildAccessors::setChild</a></div><div class=\"ttdeci\">void setChild(std::size_t i, ProxyChild &&child, typename std::enable_if< enabled, void * >::type=0)</div><div class=\"ttdoc\">Sets the i-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:201</div></div>\n+<div class=\"ttc\" id=\"aa01312_html_a8b0507820f4fca1fe800bfc320c70967\"><div class=\"ttname\"><a href=\"a01312.html#a8b0507820f4fca1fe800bfc320c70967\">Dune::TypeTree::DynamicChildAccessors::child</a></div><div class=\"ttdeci\">const auto & child(std::size_t i) const</div><div class=\"ttdoc\">Returns the i-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:171</div></div>\n+<div class=\"ttc\" id=\"aa01312_html_ad289345935ae040ca5c68eb707a204e7\"><div class=\"ttname\"><a href=\"a01312.html#ad289345935ae040ca5c68eb707a204e7\">Dune::TypeTree::DynamicChildAccessors::childStorage</a></div><div class=\"ttdeci\">auto childStorage(std::size_t i)</div><div class=\"ttdoc\">Returns the storage of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:182</div></div>\n+<div class=\"ttc\" id=\"aa01316_html\"><div class=\"ttname\"><a href=\"a01316.html\">Dune::TypeTree::ProxyNodeBase</a></div><div class=\"ttdoc\">Tag-based dispatch to appropriate base class that provides necessary functionality.</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:210</div></div>\n+<div class=\"ttc\" id=\"aa01324_html_a72e8738e0ca3193fe904d5d008992c7e\"><div class=\"ttname\"><a href=\"a01324.html#a72e8738e0ca3193fe904d5d008992c7e\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:224</div></div>\n+<div class=\"ttc\" id=\"aa01324_html_a7e5a68dd6b33b9f6c4ea322f86dd9691\"><div class=\"ttname\"><a href=\"a01324.html#a7e5a68dd6b33b9f6c4ea322f86dd9691\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag >::ChildTypes</a></div><div class=\"ttdeci\">Node::ChildTypes ChildTypes</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:223</div></div>\n+<div class=\"ttc\" id=\"aa01328_html_a0e2dc0a5b1308336816c493ebae550e6\"><div class=\"ttname\"><a href=\"a01328.html#a0e2dc0a5b1308336816c493ebae550e6\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:233</div></div>\n+<div class=\"ttc\" id=\"aa01328_html_a441ea16cffb44710d41ef4c8a32e7a1e\"><div class=\"ttname\"><a href=\"a01328.html#a441ea16cffb44710d41ef4c8a32e7a1e\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag >::ChildType</a></div><div class=\"ttdeci\">Node::ChildType ChildType</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:232</div></div>\n+<div class=\"ttc\" id=\"aa01332_html_a7564689493e427ad4869491a4ef06727\"><div class=\"ttname\"><a href=\"a01332.html#a7564689493e427ad4869491a4ef06727\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag >::NodeStorage</a></div><div class=\"ttdeci\">Node::NodeStorage NodeStorage</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:242</div></div>\n+<div class=\"ttc\" id=\"aa01332_html_ae342ab8db1a7233f9063a232116ea755\"><div class=\"ttname\"><a href=\"a01332.html#ae342ab8db1a7233f9063a232116ea755\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag >::ChildType</a></div><div class=\"ttdeci\">Node::ChildType ChildType</div><div class=\"ttdef\"><b>Definition</b> proxynode.hh:241</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,333 +1,446 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-traversal.hh\n+proxynode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TRAVERSAL_HH\n-7#define DUNE_TYPETREE_TRAVERSAL_HH\n+6#ifndef DUNE_TYPETREE_PROXYNODE_HH\n+7#define DUNE_TYPETREE_PROXYNODE_HH\n 8\n-9#include <utility>\n-10\n-11#include <dune/common/hybridutilities.hh>\n-12#include <dune/common/std/type_traits.hh>\n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh>\n+9#include <type_traits>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+12#include <dune/common/shared_ptr.hh>\n+13#include <dune/common/indices.hh>\n+14#include <dune/common/std/type_traits.hh>\n+15\n+16namespace _\bD_\bu_\bn_\be {\n+17 namespace TypeTree {\n 18\n-19namespace _\bD_\bu_\bn_\be {\n-20 namespace TypeTree {\n-21\n-27#ifndef DOXYGEN\n-29 struct NoOp\n+24 template<typename Node>\n+25 class ProxyNode;\n+26\n+28 template<typename ProxiedNode>\n+_\b2_\b9 class _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n 30 {\n-31 template<class... T>\n-32 constexpr void operator()(T&&...) const { /* do nothing */ }\n-33 };\n-34#endif\n-35\n-36 namespace Detail {\n-37\n-38 // SFINAE template check that Tree has a degree() function and a child()\n-function accepting integer indices\n-39 template<class Tree>\n-_\b4_\b0 using _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((\n-41 std::declval<Tree>().degree(),\n-42 std::declval<Tree>().child(0u)\n-43 ));\n-44\n-45 // SFINAE template check that Tree has static (constexpr) function Tree::\n-degree()\n-46 template<class Tree>\n-_\b4_\b7 using _\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt = decltype((\n-48 std::integral_constant<std::size_t, Tree::degree()>{}\n-49 ));\n-50\n-51\n-52 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n-53 std::enable_if_t<Tree::isLeaf, int> = 0>\n-_\b5_\b4 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix)\n-55 {\n-56 return std::make_tuple(prefix);\n-57 }\n-58\n-59 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n-60 std::enable_if_t<not Tree::isLeaf, int> = 0>\n-61 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix);\n-62\n-63 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix, std::\n-size_t... indices,\n-64 std::enable_if_t<(Tree::isComposite or (Tree::isPower and\n-(pathType!=_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc))), int> = 0>\n-_\b6_\b5 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix, std::\n-index_sequence<indices...>)\n-66 {\n-67 return std::tuple_cat(_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be<_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:\n-_\bC_\bh_\bi_\bl_\bd_\b<_\bT_\br_\be_\be_\b,_\bi_\bn_\bd_\bi_\bc_\be_\bs_\b>, pathType>(_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(prefix, Dune::\n-index_constant<indices>{}))...);\n-68 }\n-69\n-70 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix, std::\n-size_t... indices,\n-71 std::enable_if_t<(Tree::isPower and (pathType==_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc)), int>\n-= 0>\n-72 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix, std::\n-index_sequence<indices...>)\n-73 {\n-74 return std::tuple_cat(_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be<_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:\n-_\bC_\bh_\bi_\bl_\bd_\b<_\bT_\br_\be_\be_\b,_\bi_\bn_\bd_\bi_\bc_\be_\bs_\b>, pathType>(_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(prefix, indices))...);\n-75 }\n-76\n-77 template<class Tree, _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be pathType, class Prefix,\n-78 std::enable_if_t<not Tree::isLeaf, int>>\n-79 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be(Prefix prefix)\n-80 {\n-81 return Detail::leafTreePathTuple<Tree, pathType>(prefix, std::\n-make_index_sequence<Tree::degree()>{});\n-82 }\n-83\n-84 /* The signature is the same as for the public applyToTree\n-85 * function in Dune::Typetree, despite the additionally passed\n-86 * treePath argument. The path passed here is associated to\n-87 * the tree and the relative paths of the children (wrt. to tree)\n-88 * are appended to this. Hence the behavior of the public function\n-89 * is resembled by passing an empty treePath.\n-90 */\n-91\n-92 /*\n-93 * This is the overload for leaf traversal\n-94 */\n-95 template<class T, class TreePath, class V,\n-96 std::enable_if_t<std::decay_t<T>::isLeaf, int> = 0>\n-_\b9_\b7 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n-98 {\n-99 visitor.leaf(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-100 }\n-101\n-102 /*\n-103 * This is the general overload doing child traversal.\n-104 */\n-105 template<class T, class TreePath, class V,\n-106 std::enable_if_t<not std::decay_t<T>::isLeaf, int> = 0>\n-107 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, V&& visitor)\n-108 {\n-109 using Tree = std::remove_reference_t<T>;\n-110 using Visitor = std::remove_reference_t<V>;\n-111 visitor.pre(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-112\n-113 // check which type of traversal is supported by the tree\n-114 using allowDynamicTraversal = Dune::Std::\n-is_detected<DynamicTraversalConcept,Tree>;\n-115 using allowStaticTraversal = Dune::Std::\n-is_detected<StaticTraversalConcept,Tree>;\n+31\n+32 static const bool proxiedNodeIsConst = std::is_const<typename std::\n+remove_reference<ProxiedNode>::type>::value;\n+33\n+34 template<std::size_t k>\n+35 struct lazy_enabled\n+36 {\n+37 static const bool value = !proxiedNodeIsConst;\n+38 };\n+39\n+40 typedef _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be;\n+41\n+42 template<bool enabled = !proxiedNodeIsConst>\n+43 typename std::enable_if<enabled,Node&>::type\n+44 node ()\n+45 {\n+46 return static_cast<_\bN_\bo_\bd_\be&>(*this);\n+47 }\n+48\n+49 const _\bN_\bo_\bd_\be& node () const\n+50 {\n+51 return static_cast<const _\bN_\bo_\bd_\be&>(*this);\n+52 }\n+53\n+54 public:\n+55\n+57 template<std::size_t k>\n+_\b5_\b8 struct _\bC_\bh_\bi_\bl_\bd\n+59 : public ProxiedNode::template _\bC_\bh_\bi_\bl_\bd<k>\n+60 {};\n+61\n+64\n+66\n+69 template<std::size_t k,\n+70 typename std::enable_if<lazy_enabled<k>::value, int>::type = 0>\n+_\b7_\b1 auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n+72 {\n+73 return node().proxiedNode().template child<k>();\n+74 }\n+75\n+77\n+80 template<std::size_t k>\n+_\b8_\b1 const auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n+82 {\n+83 return node().proxiedNode().template child<k>();\n+84 }\n+85\n+87\n+90 template<std::size_t k,\n+91 typename std::enable_if<lazy_enabled<k>::value, int>::type = 0>\n+_\b9_\b2 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {})\n+93 {\n+94 return node().proxiedNode().template childStorage<k>();\n+95 }\n+96\n+98\n+104 template<std::size_t k>\n+_\b1_\b0_\b5 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {}) const\n+106 {\n+107 return node().proxiedNode().template childStorage<k>();\n+108 }\n+109\n+111 template<std::size_t k, class ProxyChild>\n+_\b1_\b1_\b2 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (ProxyChild&& _\bc_\bh_\bi_\bl_\bd, typename std::\n+enable_if<lazy_enabled<k>::value,void*>::type = 0)\n+113 {\n+114 node().proxiedNode().template setChild<k>(std::forward<ProxyChild>(_\bc_\bh_\bi_\bl_\bd));\n+115 }\n 116\n-117 // the tree must support either dynamic or static traversal\n-118 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n-119\n-120 // the visitor may specify preferred dynamic traversal\n-121 using preferDynamicTraversal = std::bool_constant<Visitor::treePathType ==\n-TreePathType::dynamic>;\n-122\n-123 // create a dynamic or static index range\n-124 auto indices = [&]{\n-125 if constexpr(preferDynamicTraversal::value && allowDynamicTraversal::value)\n-126 return Dune::range(std::size_t(tree.degree()));\n-127 else\n-128 return Dune::range(tree.degree());\n-129 }();\n-130\n-131 if constexpr(allowDynamicTraversal::value || allowStaticTraversal::value) {\n-132 Hybrid::forEach(indices, [&](auto i) {\n-133 auto&& _\bc_\bh_\bi_\bl_\bd = tree.child(i);\n-134 using _\bC_\bh_\bi_\bl_\bd = std::decay_t<decltype(_\bc_\bh_\bi_\bl_\bd)>;\n-135\n-136 visitor.beforeChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-137\n-138 // This requires that visitor.in(...) can always be instantiated,\n-139 // even if there's a single child only.\n-140 if (i>0)\n-141 visitor.in(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-142\n-143 constexpr bool visitChild = Visitor::template\n-VisitChild<Tree,Child,TreePath>::value;\n-144 if constexpr(visitChild) {\n-145 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-146 _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(_\bc_\bh_\bi_\bl_\bd, childTreePath, visitor);\n-147 }\n-148\n-149 visitor.afterChild(tree, _\bc_\bh_\bi_\bl_\bd, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-150 });\n-151 }\n-152 visitor.post(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-153 }\n-154\n-155 /* Traverse tree and visit each node. The signature is the same\n-156 * as for the public forEachNode function in Dune::Typtree,\n-157 * despite the additionally passed treePath argument. The path\n-158 * passed here is associated to the tree and the relative\n-159 * paths of the children (wrt. to tree) are appended to this.\n-160 * Hence the behavior of the public function is resembled\n-161 * by passing an empty treePath.\n-162 */\n-163 template<class T, class TreePath, class PreFunc, class LeafFunc, class\n-PostFunc>\n-_\b1_\b6_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(T&& tree, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh, PreFunc&& preFunc, LeafFunc&&\n-leafFunc, PostFunc&& postFunc)\n-165 {\n-166 using Tree = std::decay_t<T>;\n-167 if constexpr(Tree::isLeaf) {\n-168 leafFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-169 } else {\n-170 preFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-171\n-172 // check which type of traversal is supported by the tree, prefer dynamic\n-traversal\n-173 using allowDynamicTraversal = Dune::Std::\n-is_detected<DynamicTraversalConcept,Tree>;\n-174 using allowStaticTraversal = Dune::Std::\n-is_detected<StaticTraversalConcept,Tree>;\n+_\b1_\b1_\b7 const typename ProxiedNode::NodeStorage& _\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+118 {\n+119 return node().proxiedNode().nodeStorage();\n+120 }\n+121\n+122 };\n+123\n+125\n+130 template<typename ProxiedNode>\n+_\b1_\b3_\b1 class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n+132 : public _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<ProxiedNode>\n+133 {\n+134\n+135 typedef _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b<_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be;\n+136\n+137 static const bool proxiedNodeIsConst = std::is_const<typename std::\n+remove_reference<ProxiedNode>::type>::value;\n+138\n+139 template<bool enabled = !proxiedNodeIsConst>\n+140 typename std::enable_if<enabled,Node&>::type\n+141 node ()\n+142 {\n+143 return static_cast<_\bN_\bo_\bd_\be&>(*this);\n+144 }\n+145\n+146 const _\bN_\bo_\bd_\be& node () const\n+147 {\n+148 return static_cast<const _\bN_\bo_\bd_\be&>(*this);\n+149 }\n+150\n+151 public:\n+152\n+155\n+157\n+160 template<bool enabled = !proxiedNodeIsConst,\n+161 typename std::enable_if<enabled, int>::type = 0>\n+_\b1_\b6_\b2 auto& _\bc_\bh_\bi_\bl_\bd (std::size_t i)\n+163 {\n+164 return node().proxiedNode().child(i);\n+165 }\n+166\n+168\n+_\b1_\b7_\b1 const auto& _\bc_\bh_\bi_\bl_\bd (std::size_t i) const\n+172 {\n+173 return node().proxiedNode().child(i);\n+174 }\n 175\n-176 // the tree must support either dynamic or static traversal\n-177 static_assert(allowDynamicTraversal::value || allowStaticTraversal::value);\n-178\n-179 if constexpr(allowDynamicTraversal::value) {\n-180 // Specialization for dynamic traversal\n-181 for (std::size_t i = 0; i < tree.degree(); ++i) {\n-182 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-183 _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);\n-184 }\n-185 } else if constexpr(allowStaticTraversal::value) {\n-186 // Specialization for static traversal\n-187 auto indices = std::make_index_sequence<Tree::degree()>{};\n-188 Hybrid::forEach(indices, [&](auto i) {\n-189 auto childTreePath = _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk(_\bt_\br_\be_\be_\bP_\ba_\bt_\bh, i);\n-190 _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree.child(i), childTreePath, preFunc, leafFunc, postFunc);\n-191 });\n-192 }\n-193 postFunc(tree, _\bt_\br_\be_\be_\bP_\ba_\bt_\bh);\n-194 }\n-195 }\n-196\n-197 } // namespace Detail\n+177\n+180 template<bool enabled = !proxiedNodeIsConst,\n+181 typename std::enable_if<enabled, int>::type = 0>\n+_\b1_\b8_\b2 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i)\n+183 {\n+184 return node().proxiedNode().childStorage(i);\n+185 }\n+186\n+188\n+_\b1_\b9_\b4 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (std::size_t i) const\n+195 {\n+196 return node().proxiedNode().childStorage(i);\n+197 }\n 198\n-199\n-200 /\n-/\n-********************************************************************************\n-201 // Public Interface\n-202 /\n-/\n-********************************************************************************\n-203\n-217 template<class Tree, TreePathType::Type pathType=TreePathType::dynamic>\n-_\b2_\b1_\b8 constexpr auto _\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be()\n-219 {\n-220 return Detail::leafTreePathTuple<std::decay_t<Tree>, pathType>\n-(_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh());\n-221 }\n-222\n-224\n-238 template<typename Tree, typename Visitor>\n-_\b2_\b3_\b9 void _\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(Tree&& tree, Visitor&& visitor)\n+200 template<class ProxyChild, bool enabled = !proxiedNodeIsConst>\n+_\b2_\b0_\b1 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (std::size_t i, ProxyChild&& _\bc_\bh_\bi_\bl_\bd, typename std::\n+enable_if<enabled,void*>::type = 0)\n+202 {\n+203 node().proxiedNode().setChild(i, std::forward<ProxyChild>(_\bc_\bh_\bi_\bl_\bd));\n+204 }\n+205\n+206 };\n+207\n+209 template<typename Node, typename NodeTag>\n+_\b2_\b1_\b0 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be;\n+211\n+213 template<typename Node>\n+_\b2_\b1_\b4 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<Node,_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n+215 {\n+216 };\n+217\n+219 template<typename Node>\n+_\b2_\b2_\b0 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n+221 : public _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n+222 {\n+_\b2_\b2_\b3 typedef typename Node::ChildTypes _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n+_\b2_\b2_\b4 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+225 };\n+226\n+228 template<typename Node>\n+_\b2_\b2_\b9 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n+230 : public _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n+231 {\n+_\b2_\b3_\b2 typedef typename Node::ChildType _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n+_\b2_\b3_\b3 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+234 };\n+235\n+237 template<typename Node>\n+_\b2_\b3_\b8 struct _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<_\bN_\bo_\bd_\be,_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg>\n+239 : public _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>\n 240 {\n-241 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), visitor);\n-242 }\n-243\n-253 template<class Tree, class NodeFunc>\n-_\b2_\b5_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(Tree&& tree, NodeFunc&& nodeFunc)\n+_\b2_\b4_\b1 typedef typename Node::ChildType _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be;\n+_\b2_\b4_\b2 typedef typename Node::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+243 };\n+244\n+246\n+252 template<typename Node>\n+_\b2_\b5_\b3 class _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n+254 : public _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be<Node,NodeTag<Node>>\n 255 {\n-256 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), nodeFunc, nodeFunc, NoOp{});\n-257 }\n-258\n-268 template<class Tree, class LeafFunc>\n-_\b2_\b6_\b9 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be(Tree&& tree, LeafFunc&& leafFunc)\n-270 {\n-271 _\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be(tree, _\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh(), NoOp{}, leafFunc, NoOp{});\n-272 }\n+256 static const bool proxiedNodeIsConst = std::is_const<typename std::\n+remove_reference<Node>::type>::value;\n+257\n+258 template <class N>\n+259 using HasStaticDegree = index_constant<N::degree()>;\n+260\n+261 template <class N>\n+_\b2_\b6_\b2 static constexpr bool hasStaticDegree = Std::is_detected<HasStaticDegree,\n+N>::value;\n+263\n+264 // accessor mixins need to be friends for access to proxiedNode()\n+265 friend class _\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>;\n+266 friend class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs<Node>;\n+267\n+268 public:\n+269\n+_\b2_\b7_\b0 typedef Node _\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be;\n+271\n+_\b2_\b7_\b2 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b<_\bN_\bo_\bd_\be_\b> _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n 273\n-275\n-276 } // namespace TypeTree\n-277} //namespace Dune\n-278\n-279#endif // DUNE_TYPETREE_TRAVERSAL_HH\n-_\bv_\bi_\bs_\bi_\bt_\bo_\br_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bp_\ba_\bt_\bh_\b._\bh_\bh\n-_\bc_\bh_\bi_\bl_\bd_\be_\bx_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\b2_\b7_\b5 static const bool _\bi_\bs_\bL_\be_\ba_\bf = Node::isLeaf;\n+276\n+_\b2_\b7_\b8 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = Node::isPower;\n+279\n+_\b2_\b8_\b1 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = Node::isComposite;\n+282\n+283 template <class N = Node,\n+284 std::enable_if_t<hasStaticDegree<N>, int> = 0>\n+_\b2_\b8_\b5 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n+286 {\n+287 return N::degree();\n+288 }\n+289\n+290 template <class N = Node,\n+291 std::enable_if_t<not hasStaticDegree<N>, int> = 0>\n+_\b2_\b9_\b2 auto _\bd_\be_\bg_\br_\be_\be () const\n+293 {\n+294 return _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be().degree();\n+295 }\n+296\n+297\n+298 protected:\n+299\n+302\n+304 template<bool enabled = !proxiedNodeIsConst>\n+305 typename std::enable_if<enabled,Node&>::type\n+_\b3_\b0_\b6 _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be ()\n+307 {\n+308 return *_node;\n+309 }\n+310\n+_\b3_\b1_\b2 const Node& _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be () const\n+313 {\n+314 return *_node;\n+315 }\n+316\n+318 template<bool enabled = !proxiedNodeIsConst>\n+319 typename std::enable_if<enabled,std::shared_ptr<Node> >::type\n+_\b3_\b2_\b0 _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be ()\n+321 {\n+322 return _node;\n+323 }\n+324\n+_\b3_\b2_\b6 std::shared_ptr<const Node> _\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+327 {\n+328 return _node;\n+329 }\n+330\n+332\n+335\n+_\b3_\b3_\b6 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be (Node& node)\n+337 : _node(stackobject_to_shared_ptr(node))\n+338 {}\n+339\n+_\b3_\b4_\b0 _\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be (std::shared_ptr<Node> node)\n+341 : _node(std::move(node))\n+342 {}\n+343\n+345\n+346 private:\n+347\n+348 std::shared_ptr<Node> _node;\n+349 };\n+350\n+352\n+353 } // namespace TypeTree\n+354} //namespace Dune\n+355\n+356#endif // DUNE_TYPETREE_PROXYNODE_HH\n _\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be\n-void forEachNode(Tree &&tree, NodeFunc &&nodeFunc)\n-Traverse tree and visit each node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be\n-constexpr auto leafTreePathTuple()\n-Create tuple of tree paths to leafs.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be\n-void forEachLeafNode(Tree &&tree, LeafFunc &&leafFunc)\n-Traverse tree and visit each leaf node.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n-void applyToTree(Tree &&tree, Visitor &&visitor)\n-Apply visitor to TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:239\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-typename impl::_Child< Node, indices... >::type Child\n-Template alias for the type of a child node given by a list of child indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ImplementationDefined child(Node &&node, Indices... indices)\n-Extracts the child of a node given by a sequence of compile-time and run-time\n-indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn childextraction.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bp_\bu_\bs_\bh_\b__\bb_\ba_\bc_\bk\n-constexpr HybridTreePath< T..., std::size_t > push_back(const HybridTreePath<\n-T... > &tp, std::size_t i)\n-Appends a run time index to a HybridTreePath.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:416\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bh_\by_\bb_\br_\bi_\bd_\bT_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto hybridTreePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+typename std::decay_t< Node >::NodeTag NodeTag\n+Returns the node tag of the given Node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodeinterface.hh:70\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bN_\bo_\bd_\be\n-void forEachNode(T &&tree, TreePath treePath, PreFunc &&preFunc, LeafFunc\n-&&leafFunc, PostFunc &&postFunc)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt\n-decltype((std::declval< Tree >().degree(), std::declval< Tree >().child(0u)))\n-DynamicTraversalConcept\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\bC_\bo_\bn_\bc_\be_\bp_\bt\n-decltype((std::integral_constant< std::size_t, Tree::degree()>{}))\n-StaticTraversalConcept\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n-void applyToTree(T &&tree, TreePath treePath, V &&visitor)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\be_\bt_\ba_\bi_\bl_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\bu_\bp_\bl_\be\n-constexpr auto leafTreePathTuple(Prefix prefix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n-@ dynamic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bL_\be_\ba_\bf_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a leaf node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a power node with runtime degree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a composite node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n+Base class for nodes acting as a proxy for an existing node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n+ProxyNode(Node &node)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:336\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Dune::TypeTree::NodeTag< Node > NodeTag\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:281\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Mark this class as non leaf in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:275\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+static const bool isPower\n+Mark this class as a non power in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+auto degree() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n+std::enable_if< enabled, Node & >::type proxiedNode()\n+Returns the proxied node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< const Node > proxiedNodeStorage() const\n+Returns the storage of the proxied node (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n+Node ProxiedNode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::enable_if< enabled, std::shared_ptr< Node > >::type proxiedNodeStorage()\n+Returns the storage of the proxied node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static constexpr auto degree()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be\n+ProxyNode(std::shared_ptr< Node > node)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:340\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\b:_\b:_\bp_\br_\bo_\bx_\bi_\be_\bd_\bN_\bo_\bd_\be\n+const Node & proxiedNode() const\n+Returns the proxied node (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n+Mixin class providing methods for child access with compile-time parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+auto & child(index_constant< k >={})\n+Returns the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(ProxyChild &&child, typename std::enable_if< lazy_enabled< k >::\n+value, void * >::type=0)\n+Sets the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bn_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+const ProxiedNode::NodeStorage & nodeStorage() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(index_constant< k >={})\n+Returns the storage of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const auto & child(index_constant< k >={}) const\n+Returns the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(index_constant< k >={}) const\n+Returns the storage of the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+Access to the type and storage type of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs\n+Mixin class providing methods for child access with run-time parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+auto & child(std::size_t i)\n+Returns the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(std::size_t i) const\n+Returns the storage of the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(std::size_t i, ProxyChild &&child, typename std::enable_if<\n+enabled, void * >::type=0)\n+Sets the i-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const auto & child(std::size_t i) const\n+Returns the i-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bC_\bh_\bi_\bl_\bd_\bA_\bc_\bc_\be_\bs_\bs_\bo_\br_\bs_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(std::size_t i)\n+Returns the storage of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be\n+Tag-based dispatch to appropriate base class that provides necessary\n+functionality.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+Node::NodeStorage NodeStorage\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n+Node::ChildTypes ChildTypes\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+Node::NodeStorage NodeStorage\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:233\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n+Node::ChildType ChildType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+Node::NodeStorage NodeStorage\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bP_\br_\bo_\bx_\by_\bN_\bo_\bd_\be_\bB_\ba_\bs_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\ba_\bg_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be\n+Node::ChildType ChildType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn proxynode.hh:241\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00083.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00083.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: traversalutilities.hh File Reference</title>\n+<title>dune-typetree: filteredcompositenode.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -70,102 +70,46 @@\n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> |\n-<a href=\"#func-members\">Functions</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">traversalutilities.hh File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> |\n+<a href=\"#namespaces\">Namespaces</a> </div>\n+ <div class=\"headertitle\"><div class=\"title\">filteredcompositenode.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/traversal.hh</a>></code><br />\n+<div class=\"textblock\"><code>#include <memory></code><br />\n+<code>#include <tuple></code><br />\n+<code>#include <type_traits></code><br />\n+<code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code><br />\n+<code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code><br />\n+<code>#include <dune/common/shared_ptr.hh></code><br />\n+<code>#include <dune/common/typetraits.hh></code><br />\n+<code>#include <dune/common/indices.hh></code><br />\n </div>\n <p><a href=\"a00083_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01092.html\">Dune::TypeTree::FilteredCompositeNode< Node, Filter ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for composite nodes representing a filtered view on an underlying composite node. <a href=\"a01092.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01100.html\">Dune::TypeTree::FilteredCompositeNode< Node, Filter >::Child< k ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01100.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:gab407f8e914f8fa3fee78d35a102e2693\" id=\"r_gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memTemplParams\" colspan=\"2\">template<typename ResultType , typename Tree , typename F , typename R > </td></tr>\n-<tr class=\"memitem:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">ResultType </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">Dune::TypeTree::reduceOverLeafs</a> (const Tree &tree, F functor, R reduction, ResultType startValue)</td></tr>\n-<tr class=\"memdesc:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Calculate a quantity as a reduction over the leaf nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n-<tr class=\"separator:gab407f8e914f8fa3fee78d35a102e2693\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-</table>\n-<h2 class=\"groupheader\">Variable Documentation</h2>\n-<a id=\"a925ce4fb47f35dbaf1550d896578184f\" name=\"a925ce4fb47f35dbaf1550d896578184f\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a925ce4fb47f35dbaf1550d896578184f\">◆ </a></span>_functor</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">F _functor</td>\n- </tr>\n- </table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n-<a id=\"a3399305aa17d4bcec74944e962ff3a12\" name=\"a3399305aa17d4bcec74944e962ff3a12\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3399305aa17d4bcec74944e962ff3a12\">◆ </a></span>_reduction</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">R _reduction</td>\n- </tr>\n- </table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n-<a id=\"ad4dc401736cbecb52f1afd1c8c8d359f\" name=\"ad4dc401736cbecb52f1afd1c8c8d359f\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4dc401736cbecb52f1afd1c8c8d359f\">◆ </a></span>_value</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">ResultType _value</td>\n- </tr>\n- </table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n-<a id=\"ac933f134e17da9e8dbf18be15134df40\" name=\"ac933f134e17da9e8dbf18be15134df40\"></a>\n-<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac933f134e17da9e8dbf18be15134df40\">◆ </a></span>treePathType</h2>\n-\n-<div class=\"memitem\">\n-<div class=\"memproto\">\n-<table class=\"mlabels\">\n- <tr>\n- <td class=\"mlabels-left\">\n- <table class=\"memname\">\n- <tr>\n- <td class=\"memname\">const TreePathType::Type treePathType = TreePathType::dynamic</td>\n- </tr>\n- </table>\n- </td>\n- <td class=\"mlabels-right\">\n-<span class=\"mlabels\"><span class=\"mlabel\">static</span></span> </td>\n- </tr>\n </table>\n-</div><div class=\"memdoc\">\n-\n-</div>\n-</div>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,32 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-traversalutilities.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+filteredcompositenode.hh File Reference\n+#include <memory>\n+#include <tuple>\n+#include <type_traits>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n+#include <dune/common/shared_ptr.hh>\n+#include <dune/common/typetraits.hh>\n+#include <dune/common/indices.hh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>\n+\u00a0 Base class for composite nodes representing a filtered view on an\n+ underlying composite node. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b<_\b _\bN_\bo_\bd_\be_\b,_\b _\bF_\bi_\bl_\bt_\be_\br_\b _\b>_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bk_\b _\b>\n+\u00a0 Access to the type and storage type of the i-th child. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename ResultType , typename Tree , typename F , typename R >\n-ResultType\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs (const Tree &tree, F functor, R\n- reduction, ResultType startValue)\n-\u00a0 Calculate a quantity as a reduction over the leaf nodes of a\n- _\bT_\by_\bp_\be_\bT_\br_\be_\be.\n-\u00a0\n-*\b**\b**\b**\b**\b* V\bVa\bar\bri\bia\bab\bbl\ble\be D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_f\bfu\bun\bnc\bct\bto\bor\br *\b**\b**\b**\b**\b*\n-F _functor\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_r\bre\bed\bdu\buc\bct\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-R _reduction\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_v\bva\bal\blu\bue\be *\b**\b**\b**\b**\b*\n-ResultType _value\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0t\btr\bre\bee\beP\bPa\bat\bth\bhT\bTy\byp\bpe\be *\b**\b**\b**\b**\b*\n-const TreePathType::Type treePathType = TreePathType::dynamic static\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00083_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00083_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: traversalutilities.hh Source File</title>\n+<title>dune-typetree: filteredcompositenode.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,90 +74,287 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">traversalutilities.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">filteredcompositenode.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00083.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00080.html\">dune/typetree/traversal.hh</a>></span></div>\n-<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n-<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span> </div>\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span> <span class=\"keyword\">namespace </span>{</div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> </div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"> 27</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> F, <span class=\"keyword\">typename</span> R, <span class=\"keyword\">typename</span> ResultType></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> <span class=\"keyword\">struct </span>LeafReductionVisitor</div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> : <span class=\"keyword\">public</span> TypeTree::TreeVisitor</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00083.html#ac933f134e17da9e8dbf18be15134df40\"> 32</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> <a class=\"code hl_variable\" href=\"a00083.html#ac933f134e17da9e8dbf18be15134df40\">treePathType</a> = <a class=\"code hl_enumvalue\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a>;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keywordtype\">void</span> leaf(<span class=\"keyword\">const</span> Node& node, TreePath <a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>)</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <a class=\"code hl_variable\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a> = <a class=\"code hl_variable\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>(<a class=\"code hl_variable\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>,<a class=\"code hl_variable\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>(node,<a class=\"code hl_function\" href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">treePath</a>));</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> }</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> LeafReductionVisitor(F functor, R reduction, ResultType startValue)</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> : <a class=\"code hl_variable\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>(functor)</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> , <a class=\"code hl_variable\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>(reduction)</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> , <a class=\"code hl_variable\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>(startValue)</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {}</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> ResultType <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>; }</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\"> 48</a></span> F <a class=\"code hl_variable\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a>;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\"> 49</a></span> R <a class=\"code hl_variable\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a>;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\"> 50</a></span> ResultType <a class=\"code hl_variable\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a>;</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> };</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> } <span class=\"comment\">// anonymous namespace</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> ResultType, <span class=\"keyword\">typename</span> Tree, <span class=\"keyword\">typename</span> F, <span class=\"keyword\">typename</span> R></div>\n-<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\"> 83</a></span> ResultType <a class=\"code hl_function\" href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">reduceOverLeafs</a>(<span class=\"keyword\">const</span> Tree& tree, F functor, R reduction, ResultType startValue)</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> {</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> LeafReductionVisitor<F,R,ResultType> visitor(functor,reduction,startValue);</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <a class=\"code hl_function\" href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">TypeTree::applyToTree</a>(tree,visitor);</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keywordflow\">return</span> visitor.result();</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span>} <span class=\"comment\">//namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_TRAVERSALUTILITIES_HH</span></div>\n-<div class=\"ttc\" id=\"aa00032_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n-<div class=\"ttc\" id=\"aa00080_html\"><div class=\"ttname\"><a href=\"a00080.html\">traversal.hh</a></div></div>\n-<div class=\"ttc\" id=\"aa00083_html_a3399305aa17d4bcec74944e962ff3a12\"><div class=\"ttname\"><a href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">_reduction</a></div><div class=\"ttdeci\">R _reduction</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:49</div></div>\n-<div class=\"ttc\" id=\"aa00083_html_a925ce4fb47f35dbaf1550d896578184f\"><div class=\"ttname\"><a href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">_functor</a></div><div class=\"ttdeci\">F _functor</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:48</div></div>\n-<div class=\"ttc\" id=\"aa00083_html_ac933f134e17da9e8dbf18be15134df40\"><div class=\"ttname\"><a href=\"a00083.html#ac933f134e17da9e8dbf18be15134df40\">treePathType</a></div><div class=\"ttdeci\">static const TreePathType::Type treePathType</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:32</div></div>\n-<div class=\"ttc\" id=\"aa00083_html_ad4dc401736cbecb52f1afd1c8c8d359f\"><div class=\"ttname\"><a href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">_value</a></div><div class=\"ttdeci\">ResultType _value</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:50</div></div>\n-<div class=\"ttc\" id=\"aa00090_html_gab407f8e914f8fa3fee78d35a102e2693\"><div class=\"ttname\"><a href=\"a00090.html#gab407f8e914f8fa3fee78d35a102e2693\">Dune::TypeTree::reduceOverLeafs</a></div><div class=\"ttdeci\">ResultType reduceOverLeafs(const Tree &tree, F functor, R reduction, ResultType startValue)</div><div class=\"ttdoc\">Calculate a quantity as a reduction over the leaf nodes of a TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversalutilities.hh:83</div></div>\n-<div class=\"ttc\" id=\"aa00090_html_gafebbce1d18f7ddd62e267df3de139334\"><div class=\"ttname\"><a href=\"a00090.html#gafebbce1d18f7ddd62e267df3de139334\">Dune::TypeTree::applyToTree</a></div><div class=\"ttdeci\">void applyToTree(Tree &&tree, Visitor &&visitor)</div><div class=\"ttdoc\">Apply visitor to TypeTree.</div><div class=\"ttdef\"><b>Definition</b> traversal.hh:239</div></div>\n-<div class=\"ttc\" id=\"aa00093_html_gaedb504d472c078d66791c42b190f41f2\"><div class=\"ttname\"><a href=\"a00093.html#gaedb504d472c078d66791c42b190f41f2\">Dune::TypeTree::treePath</a></div><div class=\"ttdeci\">constexpr auto treePath(const T &... t)</div><div class=\"ttdoc\">Constructs a new HybridTreePath from the given indices.</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:326</div></div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <memory></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span><span class=\"preprocessor\">#include <tuple></span></div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <type_traits></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/filters.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"preprocessor\">#include <dune/common/shared_ptr.hh></span></div>\n+<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span><span class=\"preprocessor\">#include <dune/common/typetraits.hh></span></div>\n+<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span><span class=\"preprocessor\">#include <dune/common/indices.hh></span></div>\n+<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"> 18</span> </div>\n+<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"> 19</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00047.html\">dune/typetree/filters.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00050.html\">dune/typetree/nodetags.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> </div>\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> <span class=\"keyword\">namespace </span>{</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> <span class=\"comment\">// Utility structs for filter construction and application</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"comment\">// ********************************************************************************</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> <span class=\"comment\">// Gets the filter and wraps it in case of a SimpleFilter.</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Tag></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> <span class=\"keyword\">struct </span>get_filter;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> <span class=\"comment\">// Helper struct to extract the child template parameter pack from the ChildTypes tuple.</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span> <span class=\"keyword\">struct </span>apply_filter_wrapper;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter, <span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span>... Children></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"> 46</span> <span class=\"keyword\">struct </span>apply_filter_wrapper<Filter,Node,std::tuple<Children...> ></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> : <span class=\"keyword\">public</span> Filter::template apply<Node,Children...></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"> 48</span> {};</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> <span class=\"comment\">// specialization for SimpleFilter</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"> 52</span> <span class=\"keyword\">struct </span>get_filter<Filter,SimpleFilterTag></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> <span class=\"keyword\">struct </span>type</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"> 58</span> : <span class=\"keyword\">public</span> apply_filter_wrapper<filter<Filter>,Node,ChildTypes></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"> 59</span> {};</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span> };</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"> 61</span> };</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"> 62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"> 63</span> <span class=\"comment\">// specialization for AdvancedFilter</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Filter></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"> 65</span> <span class=\"keyword\">struct </span>get_filter<Filter,AdvancedFilterTag></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"> 66</span> {</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"> 67</span> <span class=\"keyword\">struct </span>type</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span> {</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> ChildTypes></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"> 70</span> <span class=\"keyword\">struct </span>apply</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"> 71</span> : <span class=\"keyword\">public</span> apply_filter_wrapper<Filter,Node,ChildTypes></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"> 72</span> {};</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"> 73</span> };</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"> 74</span> };</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"> 75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"> 76</span> } <span class=\"comment\">// anonymous namespace</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"> 77</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> Filter></div>\n+<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html\"> 82</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01092.html\">FilteredCompositeNode</a></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> {</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> get_filter<Filter,typename Filter::FilterTag>::type filter;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter::template apply<Node,typename Node::ChildTypes>::type filter_result;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> filter_result::template apply<Node> mapped_children;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> nodeIsConst = std::is_const<typename std::remove_reference<Node>::type>::value;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"> 91</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"> 92</span> <span class=\"keyword\">struct </span>lazy_enable</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> {</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"> 94</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> value = !nodeIsConst;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span> };</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"> 96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"> 98</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\"> 100</a></span> <span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"a01260.html\">CompositeNodeTag</a> <a class=\"code hl_typedef\" href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\">NodeTag</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"> 101</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\"> 103</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> mapped_children::NodeStorage <a class=\"code hl_typedef\" href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\">NodeStorage</a>;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\"> 106</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> mapped_children::ChildTypes <a class=\"code hl_typedef\" href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\">ChildTypes</a>;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\"> 109</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\">isLeaf</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"> 110</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\"> 112</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\">isPower</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\"> 115</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\">isComposite</a> = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\"> 117</a></span> <span class=\"keyword\">static</span> <span class=\"keyword\">constexpr</span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\">degree</a> ()</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"> 118</span> {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> <span class=\"keywordflow\">return</span> std::integral_constant<std::size_t,filter_result::size>{};</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"> 120</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"> 121</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"> 123</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html\"> 124</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01100.html\">Child</a> {</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"> 125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"> 126</span><span class=\"preprocessor\">#ifndef DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"> 127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::tuple_element<k,typename mapped_children::Children>::type OriginalChild;</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"> 129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"> 130</span> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::size_t mapped_index = std::tuple_element<k,typename filter_result::IndexMap>::type::original_index;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"> 131</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"> 132</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"> 133</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\"> 135</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> OriginalChild::Type <a class=\"code hl_typedef\" href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\">Type</a>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01100.html#a2635488bf3f3d4435514486803609e55\"> 138</a></span> <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> OriginalChild::type <a class=\"code hl_typedef\" href=\"a01100.html#a2635488bf3f3d4435514486803609e55\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"> 139</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"> 143</span> </div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"> 148</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"> 149</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\"> 150</a></span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> {</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> <span class=\"keywordflow\">return</span> _node->template child<Child<k>::mapped_index>();</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"> 154</span> </div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"> 156</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"> 159</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00160\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\"> 160</a></span> <span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>& <a class=\"code hl_function\" href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\">child</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"> 161</span> {</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> <span class=\"keywordflow\">return</span> _node->template child<Child<k>::mapped_index>();</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"> 163</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"> 166</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"> 169</span> <span class=\"keyword\">template</span><std::size_t k,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"> 170</span> <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value, <span class=\"keywordtype\">int</span>>::type = 0></div>\n+<div class=\"foldopen\" id=\"foldopen00171\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\"> 171</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\">childStorage</a> (index_constant<k> = {})</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"> 172</span> {</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"> 173</span> <span class=\"keywordflow\">return</span> _node->template childStorage<Child<k>::mapped_index>();</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"> 174</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"> 175</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"> 177</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"> 180</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k></div>\n+<div class=\"foldopen\" id=\"foldopen00181\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\"> 181</a></span> <span class=\"keyword\">auto</span> <a class=\"code hl_function\" href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\">childStorage</a> (index_constant<k> = {}) <span class=\"keyword\">const</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> {</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> <span class=\"keywordflow\">return</span> _node->template childStorage<Child<k>::mapped_index>();</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> </div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> <span class=\"keyword\">template</span><std::<span class=\"keywordtype\">size_t</span> k, <span class=\"keyword\">class</span> ChildType></div>\n+<div class=\"foldopen\" id=\"foldopen00188\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\"> 188</a></span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\">setChild</a> (ChildType&& <a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a>, <span class=\"keyword\">typename</span> std::enable_if<lazy_enable<k>::value,<span class=\"keywordtype\">void</span>*>::type = 0)</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> {</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> _node->template setChild<Child<k>::mapped_index>(std::forward<ChildType>(<a class=\"code hl_function\" href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">child</a>));</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"> 192</span> </div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"> 194</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"> 197</span> </div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"> 198</span> <span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"> 199</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"> 201</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"> 204</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !nodeIsConst></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"> 205</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,Node&>::type</div>\n+<div class=\"foldopen\" id=\"foldopen00206\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\"> 206</a></span> <a class=\"code hl_function\" href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\">unfiltered</a> ()</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"> 207</span> {</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"> 208</span> <span class=\"keywordflow\">return</span> *_node;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"> 210</span> </div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"> 212</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\"> 215</a></span> <span class=\"keyword\">const</span> Node& <a class=\"code hl_function\" href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\">unfiltered</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"> 216</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"> 217</span> <span class=\"keywordflow\">return</span> *_node;</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"> 218</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span> </div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keyword\">template</span><<span class=\"keywordtype\">bool</span> enabled = !nodeIsConst></div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"> 225</span> <span class=\"keyword\">typename</span> std::enable_if<enabled,std::shared_ptr<Node> >::type</div>\n+<div class=\"foldopen\" id=\"foldopen00226\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a78e69adc470eda059817cfad9178945e\"> 226</a></span> <a class=\"code hl_function\" href=\"a01092.html#a78e69adc470eda059817cfad9178945e\">unfilteredStorage</a> ()</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"> 227</span> {</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"> 228</span> <span class=\"keywordflow\">return</span> _node;</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"> 229</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"> 230</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00235\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\"> 235</a></span> std::shared_ptr<const Node> <a class=\"code hl_function\" href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\">unfilteredStorage</a> ()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"> 236</span><span class=\"keyword\"> </span>{</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> <span class=\"keywordflow\">return</span> _node;</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"> 238</span> }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"> 239</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"> 241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"> 242</span> <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"> 243</span> </div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"> 246</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00248\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\"> 248</a></span> <a class=\"code hl_function\" href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\">FilteredCompositeNode</a> (std::shared_ptr<Node> node)</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"> 249</span> : _node(std::move(node))</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"> 250</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"> 251</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00253\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\"> 253</a></span> <a class=\"code hl_function\" href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\">FilteredCompositeNode</a> (Node& node)</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"> 254</span> : _node(stackobject_to_shared_ptr(node))</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"> 255</span> {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"> 256</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"> 258</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"> 259</span> <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"> 260</span> std::shared_ptr<Node> _node;</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"> 261</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"> 262</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"> 264</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"> 266</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH</span></div>\n+<div class=\"ttc\" id=\"aa00047_html\"><div class=\"ttname\"><a href=\"a00047.html\">filters.hh</a></div></div>\n+<div class=\"ttc\" id=\"aa00050_html\"><div class=\"ttname\"><a href=\"a00050.html\">nodetags.hh</a></div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ce\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">Dune::TypeTree::TreePathType::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n-<div class=\"ttc\" id=\"aa00105_html_a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\"><div class=\"ttname\"><a href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">Dune::TypeTree::TreePathType::dynamic</a></div><div class=\"ttdeci\">@ dynamic</div><div class=\"ttdef\"><b>Definition</b> treepath.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa01092_html\"><div class=\"ttname\"><a href=\"a01092.html\">Dune::TypeTree::FilteredCompositeNode</a></div><div class=\"ttdoc\">Base class for composite nodes representing a filtered view on an underlying composite node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:83</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a1f60c9d0bdbd9759d683281bccdf5380\"><div class=\"ttname\"><a href=\"a01092.html#a1f60c9d0bdbd9759d683281bccdf5380\">Dune::TypeTree::FilteredCompositeNode::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the storage of the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:181</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a2cf6550eeb948b6d646001024f236a79\"><div class=\"ttname\"><a href=\"a01092.html#a2cf6550eeb948b6d646001024f236a79\">Dune::TypeTree::FilteredCompositeNode::degree</a></div><div class=\"ttdeci\">static constexpr auto degree()</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:117</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a40d9cc8420a84db2f55146a0991854c8\"><div class=\"ttname\"><a href=\"a01092.html#a40d9cc8420a84db2f55146a0991854c8\">Dune::TypeTree::FilteredCompositeNode::NodeStorage</a></div><div class=\"ttdeci\">mapped_children::NodeStorage NodeStorage</div><div class=\"ttdoc\">The type used for storing the children.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:103</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a504bd599d2e1c88acf62851575632eb1\"><div class=\"ttname\"><a href=\"a01092.html#a504bd599d2e1c88acf62851575632eb1\">Dune::TypeTree::FilteredCompositeNode::setChild</a></div><div class=\"ttdeci\">void setChild(ChildType &&child, typename std::enable_if< lazy_enable< k >::value, void * >::type=0)</div><div class=\"ttdoc\">Sets the k-th child to the passed-in value.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:188</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a52d7699cb0821c4d7c7f58e8f25b04a3\"><div class=\"ttname\"><a href=\"a01092.html#a52d7699cb0821c4d7c7f58e8f25b04a3\">Dune::TypeTree::FilteredCompositeNode::isLeaf</a></div><div class=\"ttdeci\">static const bool isLeaf</div><div class=\"ttdoc\">Mark this class as non leaf in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:109</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a5ead69e6cbddece295e5612b2c30bcd7\"><div class=\"ttname\"><a href=\"a01092.html#a5ead69e6cbddece295e5612b2c30bcd7\">Dune::TypeTree::FilteredCompositeNode::unfiltered</a></div><div class=\"ttdeci\">const Node & unfiltered() const</div><div class=\"ttdoc\">Returns the unfiltered node (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:215</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a6814ea4fd113b68b14eeccc3372119fa\"><div class=\"ttname\"><a href=\"a01092.html#a6814ea4fd113b68b14eeccc3372119fa\">Dune::TypeTree::FilteredCompositeNode::isComposite</a></div><div class=\"ttdeci\">static const bool isComposite</div><div class=\"ttdoc\">Mark this class as a composite in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:115</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a78e69adc470eda059817cfad9178945e\"><div class=\"ttname\"><a href=\"a01092.html#a78e69adc470eda059817cfad9178945e\">Dune::TypeTree::FilteredCompositeNode::unfilteredStorage</a></div><div class=\"ttdeci\">std::enable_if< enabled, std::shared_ptr< Node > >::type unfilteredStorage()</div><div class=\"ttdoc\">Returns the storage object of the unfiltered node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:226</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a83fbd6c6ae3d20b93d7417eb107437c4\"><div class=\"ttname\"><a href=\"a01092.html#a83fbd6c6ae3d20b93d7417eb107437c4\">Dune::TypeTree::FilteredCompositeNode::isPower</a></div><div class=\"ttdeci\">static const bool isPower</div><div class=\"ttdoc\">Mark this class as a non power in the dune-typetree.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:112</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a9092b3ecf47d44193e96ad796dc33a0d\"><div class=\"ttname\"><a href=\"a01092.html#a9092b3ecf47d44193e96ad796dc33a0d\">Dune::TypeTree::FilteredCompositeNode::FilteredCompositeNode</a></div><div class=\"ttdeci\">FilteredCompositeNode(Node &node)</div><div class=\"ttdoc\">Initialize the CompositeNode with a copy of the passed-in storage type.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:253</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_a960aedd24f4622a905e719a0f1ec289b\"><div class=\"ttname\"><a href=\"a01092.html#a960aedd24f4622a905e719a0f1ec289b\">Dune::TypeTree::FilteredCompositeNode::FilteredCompositeNode</a></div><div class=\"ttdeci\">FilteredCompositeNode(std::shared_ptr< Node > node)</div><div class=\"ttdoc\">Initialize the CompositeNode with copies of the passed in Storage objects.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:248</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_aa2859d6bd1a7f3e9c16967e45adb3103\"><div class=\"ttname\"><a href=\"a01092.html#aa2859d6bd1a7f3e9c16967e45adb3103\">Dune::TypeTree::FilteredCompositeNode::childStorage</a></div><div class=\"ttdeci\">auto childStorage(index_constant< k >={})</div><div class=\"ttdoc\">Returns the storage of the k-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:171</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_aacf3017580c4be373e999b3e60d808d6\"><div class=\"ttname\"><a href=\"a01092.html#aacf3017580c4be373e999b3e60d808d6\">Dune::TypeTree::FilteredCompositeNode::child</a></div><div class=\"ttdeci\">const auto & child(index_constant< k >={}) const</div><div class=\"ttdoc\">Returns the k-th child (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:160</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_ab2967e1126248e014670131d1a518e6b\"><div class=\"ttname\"><a href=\"a01092.html#ab2967e1126248e014670131d1a518e6b\">Dune::TypeTree::FilteredCompositeNode::child</a></div><div class=\"ttdeci\">auto & child(index_constant< k >={})</div><div class=\"ttdoc\">Returns the k-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:150</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_abeb406938826982e2af997d0e98f5d30\"><div class=\"ttname\"><a href=\"a01092.html#abeb406938826982e2af997d0e98f5d30\">Dune::TypeTree::FilteredCompositeNode::NodeTag</a></div><div class=\"ttdeci\">CompositeNodeTag NodeTag</div><div class=\"ttdoc\">The type tag that describes a CompositeNode.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:100</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_ac83723482ae3c454a3acfb924c77b788\"><div class=\"ttname\"><a href=\"a01092.html#ac83723482ae3c454a3acfb924c77b788\">Dune::TypeTree::FilteredCompositeNode::ChildTypes</a></div><div class=\"ttdeci\">mapped_children::ChildTypes ChildTypes</div><div class=\"ttdoc\">A tuple storing the types of all children.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:106</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_ac9d3feb5c366598413763309e5d14c82\"><div class=\"ttname\"><a href=\"a01092.html#ac9d3feb5c366598413763309e5d14c82\">Dune::TypeTree::FilteredCompositeNode::unfiltered</a></div><div class=\"ttdeci\">std::enable_if< enabled, Node & >::type unfiltered()</div><div class=\"ttdoc\">Returns the unfiltered node.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:206</div></div>\n+<div class=\"ttc\" id=\"aa01092_html_afbe74bbb8c43fdf387646fe21b3dada6\"><div class=\"ttname\"><a href=\"a01092.html#afbe74bbb8c43fdf387646fe21b3dada6\">Dune::TypeTree::FilteredCompositeNode::unfilteredStorage</a></div><div class=\"ttdeci\">std::shared_ptr< const Node > unfilteredStorage() const</div><div class=\"ttdoc\">Returns the storage object of the unfiltered node (const version).</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:235</div></div>\n+<div class=\"ttc\" id=\"aa01100_html\"><div class=\"ttname\"><a href=\"a01100.html\">Dune::TypeTree::FilteredCompositeNode::Child</a></div><div class=\"ttdoc\">Access to the type and storage type of the i-th child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:124</div></div>\n+<div class=\"ttc\" id=\"aa01100_html_a2635488bf3f3d4435514486803609e55\"><div class=\"ttname\"><a href=\"a01100.html#a2635488bf3f3d4435514486803609e55\">Dune::TypeTree::FilteredCompositeNode::Child::type</a></div><div class=\"ttdeci\">OriginalChild::type type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:138</div></div>\n+<div class=\"ttc\" id=\"aa01100_html_a7528d205d510cb903ff1907909d653e9\"><div class=\"ttname\"><a href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\">Dune::TypeTree::FilteredCompositeNode::Child::Type</a></div><div class=\"ttdeci\">OriginalChild::Type Type</div><div class=\"ttdoc\">The type of the child.</div><div class=\"ttdef\"><b>Definition</b> filteredcompositenode.hh:135</div></div>\n+<div class=\"ttc\" id=\"aa01260_html\"><div class=\"ttname\"><a href=\"a01260.html\">Dune::TypeTree::CompositeNodeTag</a></div><div class=\"ttdoc\">Tag designating a composite node.</div><div class=\"ttdef\"><b>Definition</b> nodetags.hh:27</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,109 +1,333 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-traversalutilities.hh\n+filteredcompositenode.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n 5\n-6#ifndef DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n-7#define DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n+6#ifndef DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n+7#define DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n 8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be {\n-12 namespace TypeTree {\n-13\n-19 namespace {\n-20\n-22\n-27 template<typename F, typename R, typename ResultType>\n-28 struct LeafReductionVisitor\n-29 : public TypeTree::TreeVisitor\n-30 {\n-31\n-_\b3_\b2 static const _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be _\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be = _\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc;\n-33\n-34 template<typename Node, typename TreePath>\n-35 void leaf(const Node& node, TreePath _\bt_\br_\be_\be_\bP_\ba_\bt_\bh)\n-36 {\n-37 _\b__\bv_\ba_\bl_\bu_\be = _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn(_\b__\bv_\ba_\bl_\bu_\be,_\b__\bf_\bu_\bn_\bc_\bt_\bo_\br(node,_\bt_\br_\be_\be_\bP_\ba_\bt_\bh));\n-38 }\n-39\n-40 LeafReductionVisitor(F functor, R reduction, ResultType startValue)\n-41 : _\b__\bf_\bu_\bn_\bc_\bt_\bo_\br(functor)\n-42 , _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn(reduction)\n-43 , _\b__\bv_\ba_\bl_\bu_\be(startValue)\n-44 {}\n-45\n-46 ResultType _\br_\be_\bs_\bu_\bl_\bt() { return _\b__\bv_\ba_\bl_\bu_\be; }\n-47\n-_\b4_\b8 F _\b__\bf_\bu_\bn_\bc_\bt_\bo_\br;\n-_\b4_\b9 R _\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn;\n-_\b5_\b0 ResultType _\b__\bv_\ba_\bl_\bu_\be;\n-51\n-52 };\n-53\n-54 } // anonymous namespace\n-55\n-57\n-82 template<typename ResultType, typename Tree, typename F, typename R>\n-_\b8_\b3 ResultType _\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs(const Tree& tree, F functor, R reduction,\n-ResultType startValue)\n-84 {\n-85 LeafReductionVisitor<F,R,ResultType> visitor(functor,reduction,startValue);\n-86 _\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be(tree,visitor);\n-87 return visitor.result();\n-88 }\n-89\n-91\n-92 } // namespace TypeTree\n-93} //namespace Dune\n-94\n-95#endif // DUNE_TYPETREE_TRAVERSALUTILITIES_HH\n-_\br_\be_\bs_\bu_\bl_\bt\n-static const result_type result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:113\n-_\bt_\br_\ba_\bv_\be_\br_\bs_\ba_\bl_\b._\bh_\bh\n-_\b__\br_\be_\bd_\bu_\bc_\bt_\bi_\bo_\bn\n-R _reduction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:49\n-_\b__\bf_\bu_\bn_\bc_\bt_\bo_\br\n-F _functor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:48\n-_\bt_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be\n-static const TreePathType::Type treePathType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:32\n-_\b__\bv_\ba_\bl_\bu_\be\n-ResultType _value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\br_\be_\bd_\bu_\bc_\be_\bO_\bv_\be_\br_\bL_\be_\ba_\bf_\bs\n-ResultType reduceOverLeafs(const Tree &tree, F functor, R reduction, ResultType\n-startValue)\n-Calculate a quantity as a reduction over the leaf nodes of a TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversalutilities.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bo_\bT_\br_\be_\be\n-void applyToTree(Tree &&tree, Visitor &&visitor)\n-Apply visitor to TypeTree.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn traversal.hh:239\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bt_\br_\be_\be_\bP_\ba_\bt_\bh\n-constexpr auto treePath(const T &... t)\n-Constructs a new HybridTreePath from the given indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:326\n+9#include <memory>\n+10#include <tuple>\n+11#include <type_traits>\n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n+15#include <dune/common/shared_ptr.hh>\n+16#include <dune/common/typetraits.hh>\n+17#include <dune/common/indices.hh>\n+18\n+19#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh>\n+21\n+22namespace _\bD_\bu_\bn_\be {\n+23 namespace TypeTree {\n+24\n+30#ifndef DOXYGEN\n+31 namespace {\n+32\n+33 /\n+/\n+********************************************************************************\n+34 // Utility structs for filter construction and application\n+35 /\n+/\n+********************************************************************************\n+36\n+37 // Gets the filter and wraps it in case of a SimpleFilter.\n+38 template<typename Filter, typename Tag>\n+39 struct get_filter;\n+40\n+41 // Helper struct to extract the child template parameter pack from the\n+ChildTypes tuple.\n+42 template<typename Filter, typename Node, typename ChildTypes>\n+43 struct apply_filter_wrapper;\n+44\n+45 template<typename Filter, typename Node, typename... Children>\n+46 struct apply_filter_wrapper<Filter,Node,std::tuple<Children...> >\n+47 : public Filter::template apply<Node,Children...>\n+48 {};\n+49\n+50 // specialization for SimpleFilter\n+51 template<typename Filter>\n+52 struct get_filter<Filter,SimpleFilterTag>\n+53 {\n+54 struct type\n+55 {\n+56 template<typename Node, typename ChildTypes>\n+57 struct apply\n+58 : public apply_filter_wrapper<filter<Filter>,Node,ChildTypes>\n+59 {};\n+60 };\n+61 };\n+62\n+63 // specialization for AdvancedFilter\n+64 template<typename Filter>\n+65 struct get_filter<Filter,AdvancedFilterTag>\n+66 {\n+67 struct type\n+68 {\n+69 template<typename Node, typename ChildTypes>\n+70 struct apply\n+71 : public apply_filter_wrapper<Filter,Node,ChildTypes>\n+72 {};\n+73 };\n+74 };\n+75\n+76 } // anonymous namespace\n+77#endif // DOXYGEN\n+78\n+79\n+81 template<typename Node, typename Filter>\n+_\b8_\b2 class _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+83 {\n+84\n+85 typedef typename get_filter<Filter,typename Filter::FilterTag>::type filter;\n+86 typedef typename filter::template apply<Node,typename Node::ChildTypes>::\n+type filter_result;\n+87 typedef typename filter_result::template apply<Node> mapped_children;\n+88\n+89 static const bool nodeIsConst = std::is_const<typename std::\n+remove_reference<Node>::type>::value;\n+90\n+91 template<std::size_t k>\n+92 struct lazy_enable\n+93 {\n+94 static const bool value = !nodeIsConst;\n+95 };\n+96\n+97 public:\n+98\n+_\b1_\b0_\b0 typedef _\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg _\bN_\bo_\bd_\be_\bT_\ba_\bg;\n+101\n+_\b1_\b0_\b3 typedef typename mapped_children::NodeStorage _\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be;\n+104\n+_\b1_\b0_\b6 typedef typename mapped_children::ChildTypes _\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs;\n+107\n+_\b1_\b0_\b9 static const bool _\bi_\bs_\bL_\be_\ba_\bf = false;\n+110\n+_\b1_\b1_\b2 static const bool _\bi_\bs_\bP_\bo_\bw_\be_\br = false;\n+113\n+_\b1_\b1_\b5 static const bool _\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be = true;\n+116\n+_\b1_\b1_\b7 static constexpr auto _\bd_\be_\bg_\br_\be_\be ()\n+118 {\n+119 return std::integral_constant<std::size_t,filter_result::size>{};\n+120 }\n+121\n+123 template<std::size_t k>\n+_\b1_\b2_\b4 struct _\bC_\bh_\bi_\bl_\bd {\n+125\n+126#ifndef DOXYGEN\n+127\n+128 typedef typename std::tuple_element<k,typename mapped_children::Children>::\n+type OriginalChild;\n+129\n+130 static const std::size_t mapped_index = std::tuple_element<k,typename\n+filter_result::IndexMap>::type::original_index;\n+131\n+132#endif // DOXYGEN\n+133\n+_\b1_\b3_\b5 typedef typename OriginalChild::Type _\bT_\by_\bp_\be;\n+136\n+_\b1_\b3_\b8 typedef typename OriginalChild::type _\bt_\by_\bp_\be;\n+139 };\n+140\n+143\n+145\n+148 template<std::size_t k,\n+149 typename std::enable_if<lazy_enable<k>::value, int>::type = 0>\n+_\b1_\b5_\b0 auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {})\n+151 {\n+152 return _node->template child<Child<k>::mapped_index>();\n+153 }\n+154\n+156\n+159 template<std::size_t k>\n+_\b1_\b6_\b0 const auto& _\bc_\bh_\bi_\bl_\bd (index_constant<k> = {}) const\n+161 {\n+162 return _node->template child<Child<k>::mapped_index>();\n+163 }\n+164\n+166\n+169 template<std::size_t k,\n+170 typename std::enable_if<lazy_enable<k>::value, int>::type = 0>\n+_\b1_\b7_\b1 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {})\n+172 {\n+173 return _node->template childStorage<Child<k>::mapped_index>();\n+174 }\n+175\n+177\n+180 template<std::size_t k>\n+_\b1_\b8_\b1 auto _\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be (index_constant<k> = {}) const\n+182 {\n+183 return _node->template childStorage<Child<k>::mapped_index>();\n+184 }\n+185\n+187 template<std::size_t k, class ChildType>\n+_\b1_\b8_\b8 void _\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd (ChildType&& _\bc_\bh_\bi_\bl_\bd, typename std::enable_if<lazy_enable<k>::\n+value,void*>::type = 0)\n+189 {\n+190 _node->template setChild<Child<k>::mapped_index>(std::forward<ChildType>\n+(_\bc_\bh_\bi_\bl_\bd));\n+191 }\n+192\n+194\n+197\n+198 protected:\n+199\n+201\n+204 template<bool enabled = !nodeIsConst>\n+205 typename std::enable_if<enabled,Node&>::type\n+_\b2_\b0_\b6 _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd ()\n+207 {\n+208 return *_node;\n+209 }\n+210\n+212\n+_\b2_\b1_\b5 const Node& _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd () const\n+216 {\n+217 return *_node;\n+218 }\n+219\n+221\n+224 template<bool enabled = !nodeIsConst>\n+225 typename std::enable_if<enabled,std::shared_ptr<Node> >::type\n+_\b2_\b2_\b6 _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be ()\n+227 {\n+228 return _node;\n+229 }\n+230\n+232\n+_\b2_\b3_\b5 std::shared_ptr<const Node> _\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be () const\n+236 {\n+237 return _node;\n+238 }\n+239\n+241\n+242 public:\n+243\n+246\n+_\b2_\b4_\b8 _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (std::shared_ptr<Node> node)\n+249 : _node(std::move(node))\n+250 {}\n+251\n+_\b2_\b5_\b3 _\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be (Node& node)\n+254 : _node(stackobject_to_shared_ptr(node))\n+255 {}\n+256\n+258\n+259 private:\n+260 std::shared_ptr<Node> _node;\n+261 };\n+262\n+264\n+265 } // namespace TypeTree\n+266} //namespace Dune\n+267\n+268#endif // DUNE_TYPETREE_FILTEREDCOMPOSITENODE_HH\n+_\bf_\bi_\bl_\bt_\be_\br_\bs_\b._\bh_\bh\n+_\bn_\bo_\bd_\be_\bt_\ba_\bg_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bT_\br_\be_\be_\bP_\ba_\bt_\bh_\bT_\by_\bp_\be_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc\n-@ dynamic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treepath.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+Base class for composite nodes representing a filtered view on an underlying\n+composite node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(index_constant< k >={}) const\n+Returns the storage of the k-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bd_\be_\bg_\br_\be_\be\n+static constexpr auto degree()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bS_\bt_\bo_\br_\ba_\bg_\be\n+mapped_children::NodeStorage NodeStorage\n+The type used for storing the children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bs_\be_\bt_\bC_\bh_\bi_\bl_\bd\n+void setChild(ChildType &&child, typename std::enable_if< lazy_enable< k >::\n+value, void * >::type=0)\n+Sets the k-th child to the passed-in value.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+static const bool isLeaf\n+Mark this class as non leaf in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd\n+const Node & unfiltered() const\n+Returns the unfiltered node (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:215\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be\n+static const bool isComposite\n+Mark this class as a composite in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::enable_if< enabled, std::shared_ptr< Node > >::type unfilteredStorage()\n+Returns the storage object of the unfiltered node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bi_\bs_\bP_\bo_\bw_\be_\br\n+static const bool isPower\n+Mark this class as a non power in the dune-typetree.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+FilteredCompositeNode(Node &node)\n+Initialize the CompositeNode with a copy of the passed-in storage type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be\n+FilteredCompositeNode(std::shared_ptr< Node > node)\n+Initialize the CompositeNode with copies of the passed in Storage objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+auto childStorage(index_constant< k >={})\n+Returns the storage of the k-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+const auto & child(index_constant< k >={}) const\n+Returns the k-th child (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+auto & child(index_constant< k >={})\n+Returns the k-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+CompositeNodeTag NodeTag\n+The type tag that describes a CompositeNode.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\bT_\by_\bp_\be_\bs\n+mapped_children::ChildTypes ChildTypes\n+A tuple storing the types of all children.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd\n+std::enable_if< enabled, Node & >::type unfiltered()\n+Returns the unfiltered node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bu_\bn_\bf_\bi_\bl_\bt_\be_\br_\be_\bd_\bS_\bt_\bo_\br_\ba_\bg_\be\n+std::shared_ptr< const Node > unfilteredStorage() const\n+Returns the storage object of the unfiltered node (const version).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:235\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+Access to the type and storage type of the i-th child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bt_\by_\bp_\be\n+OriginalChild::type type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bF_\bi_\bl_\bt_\be_\br_\be_\bd_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n+OriginalChild::Type Type\n+The type of the child.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn filteredcompositenode.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\ba_\bg\n+Tag designating a composite node.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nodetags.hh:27\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00086.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00086.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: exceptions.hh File Reference</title>\n+<title>dune-typetree: powercompositenodetransformationtemplates.hh File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -72,39 +72,44 @@\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#namespaces\">Namespaces</a> </div>\n- <div class=\"headertitle\"><div class=\"title\">exceptions.hh File Reference</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">powercompositenodetransformationtemplates.hh File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-\n-<p>TypeTree-specific exceptions. \n-<a href=\"#details\">More...</a></p>\n-<div class=\"textblock\"><code>#include <dune/common/exceptions.hh></code><br />\n+<div class=\"textblock\"><code>#include <cstddef></code><br />\n+<code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code><br />\n </div>\n <p><a href=\"a00086_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01088.html\">Dune::TypeTree::Exception</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Base class for all <a class=\"el\" href=\"a00097.html\">TypeTree</a> exceptions. <a href=\"a01088.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01264.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01268.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01272.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01276.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01280.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01284.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00096\" id=\"r_a00096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00096.html\">Dune</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a00097\" id=\"r_a00097\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00097.html\">Dune::TypeTree</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n-<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n-<div class=\"textblock\"><p>TypeTree-specific exceptions. </p>\n-</div></div><!-- contents -->\n+</div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,37 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-exceptions.hh File Reference\n-TypeTree-specific exceptions. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <dune/common/exceptions.hh>\n+powercompositenodetransformationtemplates.hh File Reference\n+#include <cstddef>\n+#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-\u00a0 Base class for all _\bT_\by_\bp_\be_\bT_\br_\be_\be exceptions. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<_\b _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,\n+ _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b<\n+ _\bS_\bo_\bu_\br_\bc_\be_\bN_\bo_\bd_\be_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\be_\bd_\bN_\bo_\bd_\be_\b _\b>_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b<_\b _\bT_\bC_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-TypeTree-specific exceptions.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00086_source.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00086_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>dune-typetree: exceptions.hh Source File</title>\n+<title>dune-typetree: powercompositenodetransformationtemplates.hh Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n <script type=\"text/javascript\" src=\"search/search.js\"></script>\n <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n@@ -74,41 +74,91 @@\n \n <div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"navelem\"><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\">dune</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\">typetree</a></li> </ul>\n </div>\n </div><!-- top -->\n <div class=\"header\">\n- <div class=\"headertitle\"><div class=\"title\">exceptions.hh</div></div>\n+ <div class=\"headertitle\"><div class=\"title\">powercompositenodetransformationtemplates.hh</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00086.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\"> 1</span><span class=\"comment\">// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\"> 2</span><span class=\"comment\">// vi: set et ts=4 sw=2 sts=2:</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\"> 3</span><span class=\"comment\">// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\"> 4</span><span class=\"comment\">// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-PDELab-exception</span></div>\n-<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n-<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#define DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n-<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span> </div>\n-<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span><span class=\"preprocessor\">#include <dune/common/exceptions.hh></span></div>\n-<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span> </div>\n-<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n-<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"> 16</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n-<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"> 17</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00019\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01088.html\"> 19</a></span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01088.html\">Exception</a></div>\n-<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"> 20</span> : <span class=\"keyword\">public</span> Dune::Exception</div>\n-<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> {};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"> 22</span> </div>\n-<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span>} <span class=\"comment\">// namespace Dune</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"> 25</span> </div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_EXCEPTIONS_HH</span></div>\n+<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\"> 5</span> </div>\n+<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\"> 6</span><span class=\"preprocessor\">#ifndef DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n+<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\"> 7</span><span class=\"preprocessor\">#define DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n+<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"> 8</span> </div>\n+<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\"> 9</span><span class=\"preprocessor\">#include <cstddef></span></div>\n+<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"> 10</span> </div>\n+<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"> 11</span><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00053.html\">dune/typetree/nodeinterface.hh</a>></span></div>\n+<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"> 12</span> </div>\n+<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"> 13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00096.html\">Dune</a> {</div>\n+<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"> 14</span> <span class=\"keyword\">namespace </span>TypeTree {</div>\n+<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"> 15</span> </div>\n+<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"> 21</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>,std::<span class=\"keywordtype\">size_t</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00022\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01264.html\"> 22</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a></div>\n+<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"> 23</span> {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"> 24</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00025\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01268.html\"> 25</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01268.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"> 26</span> {</div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\"> 27</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC,StaticDegree<SourceNode>::value> <a class=\"code hl_typedef\" href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"> 28</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00033\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01272.html\"> 33</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> TC></div>\n+<div class=\"foldopen\" id=\"foldopen00036\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01276.html\"> 36</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01276.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\"> 38</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC> <a class=\"code hl_typedef\" href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> SourceNode, <span class=\"keyword\">typename</span> Transformation, <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>,<span class=\"keyword\">typename</span>...> <span class=\"keyword\">class </span>TransformedNode></div>\n+<div class=\"foldopen\" id=\"foldopen00043\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01280.html\"> 43</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"> 44</span> {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"> 45</span> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span>... TC></div>\n+<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01284.html\"> 46</a></span> <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01284.html\">result</a></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"> 47</span> {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\"> 48</a></span> <span class=\"keyword\">typedef</span> TransformedNode<SourceNode,TC...> <a class=\"code hl_typedef\" href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\">type</a>;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"> 49</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"> 50</span> };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"> 51</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"> 54</span> } <span class=\"comment\">// namespace TypeTree</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"> 55</span>} <span class=\"comment\">//namespace Dune</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"> 56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"> 57</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH</span></div>\n+<div class=\"ttc\" id=\"aa00053_html\"><div class=\"ttname\"><a href=\"a00053.html\">nodeinterface.hh</a></div></div>\n <div class=\"ttc\" id=\"aa00096_html\"><div class=\"ttname\"><a href=\"a00096.html\">Dune</a></div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:16</div></div>\n-<div class=\"ttc\" id=\"aa01088_html\"><div class=\"ttname\"><a href=\"a01088.html\">Dune::TypeTree::Exception</a></div><div class=\"ttdoc\">Base class for all TypeTree exceptions.</div><div class=\"ttdef\"><b>Definition</b> exceptions.hh:21</div></div>\n+<div class=\"ttc\" id=\"aa01264_html\"><div class=\"ttname\"><a href=\"a01264.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:23</div></div>\n+<div class=\"ttc\" id=\"aa01268_html\"><div class=\"ttname\"><a href=\"a01268.html\">Dune::TypeTree::GenericPowerNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:26</div></div>\n+<div class=\"ttc\" id=\"aa01268_html_a2ff86d75565a9d1d1acdd34a12b8cb55\"><div class=\"ttname\"><a href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\">Dune::TypeTree::GenericPowerNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC, StaticDegree< SourceNode >::value > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:27</div></div>\n+<div class=\"ttc\" id=\"aa01272_html\"><div class=\"ttname\"><a href=\"a01272.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:34</div></div>\n+<div class=\"ttc\" id=\"aa01276_html\"><div class=\"ttname\"><a href=\"a01276.html\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:37</div></div>\n+<div class=\"ttc\" id=\"aa01276_html_adaa8a341b0101e7e5336654133d47c0e\"><div class=\"ttname\"><a href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:38</div></div>\n+<div class=\"ttc\" id=\"aa01280_html\"><div class=\"ttname\"><a href=\"a01280.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:44</div></div>\n+<div class=\"ttc\" id=\"aa01284_html\"><div class=\"ttname\"><a href=\"a01284.html\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate::result</a></div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:47</div></div>\n+<div class=\"ttc\" id=\"aa01284_html_ae9c1b1f00bb0a1ee622311dff8460ef1\"><div class=\"ttname\"><a href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate::result::type</a></div><div class=\"ttdeci\">TransformedNode< SourceNode, TC... > type</div><div class=\"ttdef\"><b>Definition</b> powercompositenodetransformationtemplates.hh:48</div></div>\n </div><!-- fragment --></div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,37 +1,90 @@\n dune-typetree\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bt_\by_\bp_\be_\bt_\br_\be_\be\n-exceptions.hh\n+powercompositenodetransformationtemplates.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-\n PDELab-exception\n-5#ifndef DUNE_TYPETREE_EXCEPTIONS_HH\n-6#define DUNE_TYPETREE_EXCEPTIONS_HH\n-7\n-8#include <dune/common/exceptions.hh>\n-9\n-15namespace _\bD_\bu_\bn_\be {\n-16 namespace TypeTree {\n-17\n-_\b1_\b9 class _\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-20 : public Dune::Exception\n-21 {};\n-22\n-23 } // namespace TypeTree\n-24} // namespace Dune\n-25\n-26#endif // DUNE_TYPETREE_EXCEPTIONS_HH\n+5\n+6#ifndef DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n+7#define DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n+8\n+9#include <cstddef>\n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bt_\by_\bp_\be_\bt_\br_\be_\be_\b/_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be {\n+14 namespace TypeTree {\n+15\n+21 template<typename SourceNode, typename Transformation,\n+template<typename,typename,std::size_t> class TransformedNode>\n+_\b2_\b2 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+23 {\n+24 template<typename TC>\n+_\b2_\b5 struct _\br_\be_\bs_\bu_\bl_\bt\n+26 {\n+_\b2_\b7 typedef TransformedNode<SourceNode,TC,StaticDegree<SourceNode>::value> _\bt_\by_\bp_\be;\n+28 };\n+29 };\n+30\n+31\n+32 template<typename SourceNode, typename Transformation,\n+template<typename,typename> class TransformedNode>\n+_\b3_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+34 {\n+35 template<typename TC>\n+_\b3_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n+37 {\n+_\b3_\b8 typedef TransformedNode<SourceNode,TC> _\bt_\by_\bp_\be;\n+39 };\n+40 };\n+41\n+42 template<typename SourceNode, typename Transformation,\n+template<typename,typename...> class TransformedNode>\n+_\b4_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+44 {\n+45 template<typename... TC>\n+_\b4_\b6 struct _\br_\be_\bs_\bu_\bl_\bt\n+47 {\n+_\b4_\b8 typedef TransformedNode<SourceNode,TC...> _\bt_\by_\bp_\be;\n+49 };\n+50 };\n+51\n+53\n+54 } // namespace TypeTree\n+55} //namespace Dune\n+56\n+57#endif // DUNE_TYPETREE_POWERCOMPOSITENODETRANSFORMATIONTEMPLATES_HH\n+_\bn_\bo_\bd_\be_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn accumulate_static.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-Base class for all TypeTree exceptions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< SourceNode, TC, StaticDegree< SourceNode >::value > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bP_\bo_\bw_\be_\br_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< SourceNode, TC > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\by_\bp_\be_\bT_\br_\be_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bC_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\bN_\bo_\bd_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bT_\be_\bm_\bp_\bl_\ba_\bt_\be_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bt_\by_\bp_\be\n+TransformedNode< SourceNode, TC... > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn powercompositenodetransformationtemplates.hh:48\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00090.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00090.html", "unified_diff": "@@ -214,16 +214,16 @@\n <td>)</td>\n <td></td><td></td>\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Apply visitor to <a class=\"el\" href=\"a00097.html\">TypeTree</a>. </p>\n-<div class=\"fragment\"><div class=\"line\"><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00080.html\">dune/typetree/traversal.hh</a>></span></div>\n-<div class=\"ttc\" id=\"aa00080_html\"><div class=\"ttname\"><a href=\"a00080.html\">traversal.hh</a></div></div>\n+<div class=\"fragment\"><div class=\"line\"><span class=\"preprocessor\">#include <<a class=\"code\" href=\"a00059.html\">dune/typetree/traversal.hh</a>></span></div>\n+<div class=\"ttc\" id=\"aa00059_html\"><div class=\"ttname\"><a href=\"a00059.html\">traversal.hh</a></div></div>\n </div><!-- fragment --><p> This function applies the given visitor to the given tree. Both visitor and tree may be const or non-const (if the compiler supports rvalue references, they may even be a non-const temporary).</p>\n <dl class=\"section note\"><dt>Note</dt><dd>The visitor must implement the interface laid out by <a class=\"el\" href=\"a01560.html\" title=\"Visitor interface and base class for TypeTree visitors.\">DefaultVisitor</a> (most easily achieved by inheriting from it) and specify the required type of tree traversal (static or dynamic) by inheriting from either <a class=\"el\" href=\"a01588.html\" title=\"Mixin base class for visitors that require a static TreePath during traversal.\">StaticTraversal</a> or <a class=\"el\" href=\"a01592.html\" title=\"Mixin base class for visitors that only need a dynamic TreePath during traversal.\">DynamicTraversal</a>.</dd></dl>\n <dl class=\"params\"><dt>Parameters</dt><dd>\n <table class=\"params\">\n <tr><td class=\"paramname\">tree</td><td>The tree the visitor will be applied to. </td></tr>\n <tr><td class=\"paramname\">visitor</td><td>The visitor to apply to the tree. </td></tr>\n </table>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00924.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00924.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::or_< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type using ||. \n <a href=\"a00924.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00928.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00928.html\">typename</a> result_type><br />\n struct Dune::TypeTree::or_< result_type ></div><p>Statically combine two values of type result_type using ||. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00928.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00928.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00925.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::or_< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:aa7bdb909ef8b0ea752dddd340160c3c7\" id=\"r_aa7bdb909ef8b0ea752dddd340160c3c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00928.html\">static</a> <a class=\"el\" href=\"a00928.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00928.html#aa7bdb909ef8b0ea752dddd340160c3c7\">result</a> = <a class=\"el\" href=\"a00928.html\">r1</a> || <a class=\"el\" href=\"a00928.html\">r2</a></td></tr>\n <tr class=\"separator:aa7bdb909ef8b0ea752dddd340160c3c7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00932.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00932.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::and_< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type using &&. \n <a href=\"a00932.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00936.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00936.html\">typename</a> result_type><br />\n struct Dune::TypeTree::and_< result_type ></div><p>Statically combine two values of type result_type using &&. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00936.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00936.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00933.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::and_< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:afd5aa82afbde5032ac7179be2e71584c\" id=\"r_afd5aa82afbde5032ac7179be2e71584c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00936.html\">static</a> <a class=\"el\" href=\"a00936.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00936.html#afd5aa82afbde5032ac7179be2e71584c\">result</a> = <a class=\"el\" href=\"a00936.html\">r1</a> && <a class=\"el\" href=\"a00936.html\">r2</a></td></tr>\n <tr class=\"separator:afd5aa82afbde5032ac7179be2e71584c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00940.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00940.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::plus< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type using +. \n <a href=\"a00940.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00944.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00944.html\">typename</a> result_type><br />\n struct Dune::TypeTree::plus< result_type ></div><p>Statically combine two values of type result_type using +. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00944.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00944.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00941.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::plus< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a2cb0d4f361c931ef4c0d8620b7e12c1a\" id=\"r_a2cb0d4f361c931ef4c0d8620b7e12c1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00944.html\">static</a> <a class=\"el\" href=\"a00944.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00944.html#a2cb0d4f361c931ef4c0d8620b7e12c1a\">result</a> = <a class=\"el\" href=\"a00944.html\">r1</a> + <a class=\"el\" href=\"a00944.html\">r2</a></td></tr>\n <tr class=\"separator:a2cb0d4f361c931ef4c0d8620b7e12c1a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00948.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00948.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::minus< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type using -. \n <a href=\"a00948.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00952.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00952.html\">typename</a> result_type><br />\n struct Dune::TypeTree::minus< result_type ></div><p>Statically combine two values of type result_type using -. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00952.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00952.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00949.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::minus< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a2addd41cf0fa10cd396af23943fe4c84\" id=\"r_a2addd41cf0fa10cd396af23943fe4c84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00952.html\">static</a> <a class=\"el\" href=\"a00952.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00952.html#a2addd41cf0fa10cd396af23943fe4c84\">result</a> = <a class=\"el\" href=\"a00952.html\">r1</a> - <a class=\"el\" href=\"a00952.html\">r2</a></td></tr>\n <tr class=\"separator:a2addd41cf0fa10cd396af23943fe4c84\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00956.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00956.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::multiply< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type using *. \n <a href=\"a00956.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00960.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00960.html\">typename</a> result_type><br />\n struct Dune::TypeTree::multiply< result_type ></div><p>Statically combine two values of type result_type using *. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00960.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00960.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00957.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::multiply< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a5c5780fd11bf490ab76234a9f987544a\" id=\"r_a5c5780fd11bf490ab76234a9f987544a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00960.html\">static</a> <a class=\"el\" href=\"a00960.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00960.html#a5c5780fd11bf490ab76234a9f987544a\">result</a> = <a class=\"el\" href=\"a00960.html\">r1</a> * <a class=\"el\" href=\"a00960.html\">r2</a></td></tr>\n <tr class=\"separator:a5c5780fd11bf490ab76234a9f987544a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00964.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00964.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::min< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type by returning their minimum. \n <a href=\"a00964.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00968.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00968.html\">typename</a> result_type><br />\n struct Dune::TypeTree::min< result_type ></div><p>Statically combine two values of type result_type by returning their minimum. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00968.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00968.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00965.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::min< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a0626bec9ba3e55463234f5d25b3dd20b\" id=\"r_a0626bec9ba3e55463234f5d25b3dd20b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00968.html\">static</a> <a class=\"el\" href=\"a00968.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00968.html#a0626bec9ba3e55463234f5d25b3dd20b\">result</a> = <a class=\"el\" href=\"a00968.html\">r1</a> < <a class=\"el\" href=\"a00968.html\">r2</a> ? <a class=\"el\" href=\"a00968.html\">r1</a> : <a class=\"el\" href=\"a00968.html\">r2</a></td></tr>\n <tr class=\"separator:a0626bec9ba3e55463234f5d25b3dd20b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00972.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00972.html", "unified_diff": "@@ -78,26 +78,26 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::max< result_type > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically combine two values of type result_type by returning their maximum. \n <a href=\"a00972.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00976.html\">reduce</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<<a class=\"el\" href=\"a00976.html\">typename</a> result_type><br />\n struct Dune::TypeTree::max< result_type ></div><p>Statically combine two values of type result_type by returning their maximum. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a00976.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a00976.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a00973.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::max< result_type >::reduce< r1, r2 > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a2dc2d647efdb98bbf23e8c450f753abd\" id=\"r_a2dc2d647efdb98bbf23e8c450f753abd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00976.html\">static</a> <a class=\"el\" href=\"a00976.html\">const</a> result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00976.html#a2dc2d647efdb98bbf23e8c450f753abd\">result</a> = <a class=\"el\" href=\"a00976.html\">r1</a> > <a class=\"el\" href=\"a00976.html\">r2</a> ? <a class=\"el\" href=\"a00976.html\">r1</a> : <a class=\"el\" href=\"a00976.html\">r2</a></td></tr>\n <tr class=\"separator:a2dc2d647efdb98bbf23e8c450f753abd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -111,15 +111,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01016.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01016.html", "unified_diff": "@@ -80,15 +80,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AccumulateValue< Tree, Functor, Reduction, startValue, ParentChildReduction > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically accumulate a value over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. \n <a href=\"a01016.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:aaf6841863a3afd53a49b33d969449928\" id=\"r_aaf6841863a3afd53a49b33d969449928\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef Functor::result_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a></td></tr>\n <tr class=\"memdesc:aaf6841863a3afd53a49b33d969449928\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The result type of the computation. <br /></td></tr>\n <tr class=\"separator:aaf6841863a3afd53a49b33d969449928\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -124,19 +124,19 @@\n <div class=\"line\"> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> value = <span class=\"keyword\">true</span>;</div>\n <div class=\"line\"> };</div>\n <div class=\"line\"> </div>\n <div class=\"line\"> <span class=\"comment\">// Calculate the per-node result.</span></div>\n <div class=\"line\"> <span class=\"keyword\">template</span><<span class=\"keyword\">typename</span> Node, <span class=\"keyword\">typename</span> TreePath></div>\n <div class=\"line\"> <span class=\"keyword\">struct </span>visit</div>\n <div class=\"line\"> {</div>\n-<div class=\"line\"> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = ...;</div>\n+<div class=\"line\"> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> result_type <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = ...;</div>\n <div class=\"line\"> };</div>\n <div class=\"line\"> </div>\n <div class=\"line\">};</div>\n-<div class=\"ttc\" id=\"aa00032_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n+<div class=\"ttc\" id=\"aa00023_html_acd23380b12c1509b3b3f31b893af75c8\"><div class=\"ttname\"><a href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a></div><div class=\"ttdeci\">static const result_type result</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:113</div></div>\n <div class=\"ttc\" id=\"aa01016_html_aaf6841863a3afd53a49b33d969449928\"><div class=\"ttname\"><a href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">Dune::TypeTree::AccumulateValue::result_type</a></div><div class=\"ttdeci\">Functor::result_type result_type</div><div class=\"ttdoc\">The result type of the computation.</div><div class=\"ttdef\"><b>Definition</b> accumulate_static.hh:265</div></div>\n </div><!-- fragment --><dl class=\"tparams\"><dt>Template Parameters</dt><dd>\n <table class=\"tparams\">\n <tr><td class=\"paramname\">Reduction</td><td>The reduction operator used to accumulate the per-node results.</td></tr>\n </table>\n </dd>\n </dl>\n@@ -145,15 +145,15 @@\n <div class=\"line\"><span class=\"keyword\">struct </span>ReductionOperator</div>\n <div class=\"line\">{</div>\n <div class=\"line\"> </div>\n <div class=\"line\"> <span class=\"comment\">// combine two per-node results</span></div>\n <div class=\"line\"> <span class=\"keyword\">template</span><result_type r1, result_type r2></div>\n <div class=\"line\"> <span class=\"keyword\">struct </span>reduce</div>\n <div class=\"line\"> {</div>\n-<div class=\"line\"> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a> <a class=\"code hl_variable\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = ...;</div>\n+<div class=\"line\"> <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a01016.html#aaf6841863a3afd53a49b33d969449928\">result_type</a> <a class=\"code hl_variable\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> = ...;</div>\n <div class=\"line\"> };</div>\n <div class=\"line\"> </div>\n <div class=\"line\">};</div>\n </div><!-- fragment --><dl class=\"tparams\"><dt>Template Parameters</dt><dd>\n <table class=\"tparams\">\n <tr><td class=\"paramname\">startValue</td><td>The starting value fed into the initial accumulation step. </td></tr>\n </table>\n@@ -202,15 +202,15 @@\n </div><div class=\"memdoc\">\n \n <p>The accumulated result of the computation. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01068.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01068.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01065.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TypeAccumulationPolicy< Functor, Reduction, StartType, ParentChildReduction, ReductionAlgorithm > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a3b1a56207cb93b1ce51d6ce8d820815d\" id=\"r_a3b1a56207cb93b1ce51d6ce8d820815d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef Functor </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01068.html#a3b1a56207cb93b1ce51d6ce8d820815d\">functor</a></td></tr>\n <tr class=\"separator:a3b1a56207cb93b1ce51d6ce8d820815d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:aae2cb32304e014e5be96fc979737f65e\" id=\"r_aae2cb32304e014e5be96fc979737f65e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef Reduction </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01068.html#aae2cb32304e014e5be96fc979737f65e\">sibling_reduction</a></td></tr>\n <tr class=\"separator:aae2cb32304e014e5be96fc979737f65e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -220,15 +220,15 @@\n </table>\n </div><div class=\"memdoc\">\n <p>The initial result type. This type will be feed as first operand to the reduction operators when doing the first accumulation (and there is no calculated result to accumulate with yet). </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01072.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01072.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AccumulateType< Tree, Policy > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Statically accumulate a type over the nodes of a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. \n <a href=\"a01072.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00032_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/accumulate_static.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a477d6851a80a598acc517ded10b851ed\" id=\"r_a477d6851a80a598acc517ded10b851ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef accumulate_type< Tree, Policy, typenamePolicy::start_type, <a class=\"el\" href=\"a01392.html\">HybridTreePath</a><>, <a class=\"el\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a>< Tree > >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01072.html#a477d6851a80a598acc517ded10b851ed\">type</a></td></tr>\n <tr class=\"memdesc:a477d6851a80a598acc517ded10b851ed\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The accumulated result of the computation. <br /></td></tr>\n <tr class=\"separator:a477d6851a80a598acc517ded10b851ed\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -118,15 +118,15 @@\n </div><div class=\"memdoc\">\n \n <p>The accumulated result of the computation. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00032_source.html\">accumulate_static.hh</a></li>\n+<li><a class=\"el\" href=\"a00023_source.html\">accumulate_static.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01076.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01076.html", "unified_diff": "@@ -82,15 +82,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::CompositeNode< Children > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for composite nodes based on variadic templates. \n <a href=\"a01076.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00026_source.html\">dune/typetree/compositenode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/compositenode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01080.html\">Child</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01080.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -819,15 +819,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a non power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00026_source.html\">compositenode.hh</a></li>\n+<li><a class=\"el\" href=\"a00044_source.html\">compositenode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01080.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01080.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::CompositeNode< Children >::Child< k > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Access to the type and storage type of the i-th child. \n <a href=\"a01080.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00026_source.html\">dune/typetree/compositenode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/compositenode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a3d870db35b9da8565bba729babd2ce4c\" id=\"r_a3d870db35b9da8565bba729babd2ce4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::tuple_element< k, <a class=\"el\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">ChildTypes</a> ><a class=\"el\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">::type</a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01080.html#a3d870db35b9da8565bba729babd2ce4c\">Type</a></td></tr>\n <tr class=\"memdesc:a3d870db35b9da8565bba729babd2ce4c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type of the child. <br /></td></tr>\n <tr class=\"separator:a3d870db35b9da8565bba729babd2ce4c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:abb5caac9e575a950957a989f847d1b51\" id=\"r_abb5caac9e575a950957a989f847d1b51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::tuple_element< k, <a class=\"el\" href=\"a01076.html#a90fa55292e12c492942fe9ae4c49e2b3\">ChildTypes</a> >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01080.html#abb5caac9e575a950957a989f847d1b51\">type</a></td></tr>\n@@ -136,15 +136,15 @@\n </div><div class=\"memdoc\">\n \n <p>The type of the child. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00026_source.html\">compositenode.hh</a></li>\n+<li><a class=\"el\" href=\"a00044_source.html\">compositenode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01084.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01084.html", "unified_diff": "@@ -81,15 +81,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DynamicPowerNode< T > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Collect multiple instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. \n <a href=\"a01084.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00077_source.html\">dune/typetree/dynamicpowernode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00026_source.html\">dune/typetree/dynamicpowernode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a52a60be3d89ce690963493105bc58b78\" id=\"r_a52a60be3d89ce690963493105bc58b78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01256.html\">DynamicPowerNodeTag</a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01084.html#a52a60be3d89ce690963493105bc58b78\">NodeTag</a></td></tr>\n <tr class=\"memdesc:a52a60be3d89ce690963493105bc58b78\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type tag that describes the node. <br /></td></tr>\n <tr class=\"separator:a52a60be3d89ce690963493105bc58b78\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a6b08f7dded4e1a0a347506841df679c6\" id=\"r_a6b08f7dded4e1a0a347506841df679c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef T </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01084.html#a6b08f7dded4e1a0a347506841df679c6\">ChildType</a></td></tr>\n@@ -776,15 +776,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00077_source.html\">dynamicpowernode.hh</a></li>\n+<li><a class=\"el\" href=\"a00026_source.html\">dynamicpowernode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01088.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01088.html", "unified_diff": "@@ -76,29 +76,29 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Exception Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for all <a class=\"el\" href=\"a00097.html\">TypeTree</a> exceptions. \n <a href=\"a01088.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/exceptions.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/exceptions.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::Exception:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01087.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_exception_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_exception_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_exception_inherit__map\">\n <area shape=\"rect\" title=\"Base class for all TypeTree exceptions.\" alt=\"\" coords=\"5,79,184,104\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"35,5,154,31\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"97,44,97,79,92,79,92,44\"/>\n </map>\n </div>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Base class for all <a class=\"el\" href=\"a00097.html\">TypeTree</a> exceptions. </p>\n </div><hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00086_source.html\">exceptions.hh</a></li>\n+<li><a class=\"el\" href=\"a00041_source.html\">exceptions.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01092.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01092.html", "unified_diff": "@@ -82,15 +82,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FilteredCompositeNode< Node, Filter > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for composite nodes representing a filtered view on an underlying composite node. \n <a href=\"a01092.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00071_source.html\">dune/typetree/filteredcompositenode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00083_source.html\">dune/typetree/filteredcompositenode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01100.html\">Child</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01100.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -693,15 +693,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a non power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00071_source.html\">filteredcompositenode.hh</a></li>\n+<li><a class=\"el\" href=\"a00083_source.html\">filteredcompositenode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01100.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01100.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FilteredCompositeNode< Node, Filter >::Child< k > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Access to the type and storage type of the i-th child. \n <a href=\"a01100.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00071_source.html\">dune/typetree/filteredcompositenode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00083_source.html\">dune/typetree/filteredcompositenode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a7528d205d510cb903ff1907909d653e9\" id=\"r_a7528d205d510cb903ff1907909d653e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef OriginalChild::Type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01100.html#a7528d205d510cb903ff1907909d653e9\">Type</a></td></tr>\n <tr class=\"memdesc:a7528d205d510cb903ff1907909d653e9\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type of the child. <br /></td></tr>\n <tr class=\"separator:a7528d205d510cb903ff1907909d653e9\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a2635488bf3f3d4435514486803609e55\" id=\"r_a2635488bf3f3d4435514486803609e55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef OriginalChild::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01100.html#a2635488bf3f3d4435514486803609e55\">type</a></td></tr>\n@@ -136,15 +136,15 @@\n </div><div class=\"memdoc\">\n \n <p>The type of the child. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00071_source.html\">filteredcompositenode.hh</a></li>\n+<li><a class=\"el\" href=\"a00083_source.html\">filteredcompositenode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01104.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01104.html", "unified_diff": "@@ -76,20 +76,20 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FilterEntry< new_k, old_k > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>A filter entry describing the mapping of one child in the filtered node. \n <a href=\"a01104.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<std::size_t new_k, std::size_t old_k><br />\n struct Dune::TypeTree::FilterEntry< new_k, old_k ></div><p>A filter entry describing the mapping of one child in the filtered node. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01108.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01108.html", "unified_diff": "@@ -81,15 +81,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FilterResult< FilterEntries > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>The result of a filter. \n <a href=\"a01108.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01112.html\">apply</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n@@ -144,15 +144,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01112.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01112.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01109.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FilterResult< FilterEntries >::apply< Node > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a39b9a66f186fdd286f5c12838c2c811b\" id=\"r_a39b9a66f186fdd286f5c12838c2c811b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::tuple< typename Node::template <a class=\"el\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>< FilterEntries::original_index >... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01112.html#a39b9a66f186fdd286f5c12838c2c811b\">Children</a></td></tr>\n <tr class=\"separator:a39b9a66f186fdd286f5c12838c2c811b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:ae1aa70004391c42ab3be2b7163ed0d0f\" id=\"r_ae1aa70004391c42ab3be2b7163ed0d0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::tuple< typename Node::template <a class=\"el\" href=\"a00091.html#ga8136d392450f4308b90a04a143e20feb\">Child</a>< FilterEntries::original_index >::Type... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01112.html#ae1aa70004391c42ab3be2b7163ed0d0f\">ChildTypes</a></td></tr>\n <tr class=\"separator:ae1aa70004391c42ab3be2b7163ed0d0f\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -143,15 +143,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01116.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01116.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleFilterTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag describing a simple filter that can only decide whether or not to include a single given child. \n <a href=\"a01116.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag describing a simple filter that can only decide whether or not to include a single given child. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01120.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01120.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AdvancedFilterTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag describing an advanced filter that has full control over the construction of the list of FilterEntries. \n <a href=\"a01120.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag describing an advanced filter that has full control over the construction of the list of FilterEntries. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01124.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01124.html", "unified_diff": "@@ -80,15 +80,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AdvancedFilter Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for advanced filters. \n <a href=\"a01124.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::AdvancedFilter:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01123.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_advanced_filter_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_advanced_filter_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_advanced_filter_inherit__map\">\n <area shape=\"rect\" title=\"Base class for advanced filters.\" alt=\"\" coords=\"7,5,186,45\"/>\n <area shape=\"rect\" href=\"a01160.html\" title=\"Filter class for FilteredCompositeNode that selects the children with the given indices.\" alt=\"\" coords=\"5,93,188,133\"/>\n@@ -124,15 +124,15 @@\n </div><div class=\"memdoc\">\n \n <p>Filter tag for deciding on filter application mechanism. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01128.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01128.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AdvancedFilter::apply< Node, Children > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Apply this filter to the given node and children. \n <a href=\"a01128.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a034c4aa57e11832b7ca8fd75ae511ec3\" id=\"r_a034c4aa57e11832b7ca8fd75ae511ec3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef implementation defined </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01128.html#a034c4aa57e11832b7ca8fd75ae511ec3\">type</a></td></tr>\n <tr class=\"memdesc:a034c4aa57e11832b7ca8fd75ae511ec3\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The result of the filtering process. <br /></td></tr>\n <tr class=\"separator:a034c4aa57e11832b7ca8fd75ae511ec3\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -111,15 +111,15 @@\n \n <p>The result of the filtering process. </p>\n <p>This type must be a model of <a class=\"el\" href=\"a01108.html\" title=\"The result of a filter.\">FilterResult</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01132.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01132.html", "unified_diff": "@@ -80,15 +80,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleFilter Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Default simple filter that accepts any node and leaves its child structure unchanged. \n <a href=\"a01132.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01140.html\">apply</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Applies the filter to the given child node. <a href=\"a01140.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01136.html\">validate</a></td></tr>\n@@ -118,15 +118,15 @@\n </div><div class=\"memdoc\">\n \n <p>Filter tag for deciding on filter application mechanism. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01136.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01136.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleFilter::validate< Node > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Validates the combination of filter and node. \n <a href=\"a01136.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a5c66acd334e0cb097ee1c4f652ed6139\" id=\"r_a5c66acd334e0cb097ee1c4f652ed6139\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01136.html#a5c66acd334e0cb097ee1c4f652ed6139\">value</a> = true</td></tr>\n <tr class=\"memdesc:a5c66acd334e0cb097ee1c4f652ed6139\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">True if the combination of filter and node is valid. <br /></td></tr>\n <tr class=\"separator:a5c66acd334e0cb097ee1c4f652ed6139\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -118,15 +118,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if the combination of filter and node is valid. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01140.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01140.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleFilter::apply< Child, new_index, old_index > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Applies the filter to the given child node. \n <a href=\"a01140.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a1898f545f2bf84b28e34415c00276770\" id=\"r_a1898f545f2bf84b28e34415c00276770\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01140.html#a1898f545f2bf84b28e34415c00276770\">value</a> = true</td></tr>\n <tr class=\"memdesc:a1898f545f2bf84b28e34415c00276770\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">True if the child will be included in the filtered node. <br /></td></tr>\n <tr class=\"separator:a1898f545f2bf84b28e34415c00276770\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -127,15 +127,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if the child will be included in the filtered node. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01160.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01160.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::IndexFilter< indices > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Filter class for <a class=\"el\" href=\"a01092.html\" title=\"Base class for composite nodes representing a filtered view on an underlying composite node.\">FilteredCompositeNode</a> that selects the children with the given indices. \n <a href=\"a01160.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::IndexFilter< indices >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01159.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_index_filter_3_01indices_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_index_filter_3_01indices_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_index_filter_3_01indices_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Filter class for FilteredCompositeNode that selects the children with the given indices.\" alt=\"\" coords=\"5,93,188,133\"/>\n <area shape=\"rect\" href=\"a01124.html\" title=\"Base class for advanced filters.\" alt=\"\" coords=\"7,5,186,45\"/>\n@@ -126,15 +126,15 @@\n </div><div class=\"memdoc\">\n \n <p>Filter tag for deciding on filter application mechanism. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01180.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01180.html", "unified_diff": "@@ -78,27 +78,27 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::filter< Filter > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Adapter class that takes a <a class=\"el\" href=\"a01132.html\" title=\"Default simple filter that accepts any node and leaves its child structure unchanged.\">SimpleFilter</a>, validated it and turns it into an <a class=\"el\" href=\"a01124.html\" title=\"Base class for advanced filters.\">AdvancedFilter</a>. \n <a href=\"a01180.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01184.html\">apply</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Apply the filter. <a href=\"a01184.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<typename Filter><br />\n struct Dune::TypeTree::filter< Filter ></div><p>Adapter class that takes a <a class=\"el\" href=\"a01132.html\" title=\"Default simple filter that accepts any node and leaves its child structure unchanged.\">SimpleFilter</a>, validated it and turns it into an <a class=\"el\" href=\"a01124.html\" title=\"Base class for advanced filters.\">AdvancedFilter</a>. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01184.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01184.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::filter< Filter >::apply< Node, Children > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Apply the filter. \n <a href=\"a01184.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/filters.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/filters.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ac0c6d8d73084c07bc88660811465a8d4\" id=\"r_ac0c6d8d73084c07bc88660811465a8d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef filter_helper< Filter, 0, 0, Children... >::template <a class=\"el\" href=\"a01184.html\">apply</a> ::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01184.html#ac0c6d8d73084c07bc88660811465a8d4\">type</a></td></tr>\n <tr class=\"separator:ac0c6d8d73084c07bc88660811465a8d4\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n@@ -110,15 +110,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00074_source.html\">filters.hh</a></li>\n+<li><a class=\"el\" href=\"a00047_source.html\">filters.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01188.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01188.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#nested-classes\">Classes</a> |\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"a01185.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FixedCapacityStackView< T > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::FixedCapacityStackView< T >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01187.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_fixed_capacity_stack_view_3_01_t_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_fixed_capacity_stack_view_3_01_t_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_fixed_capacity_stack_view_3_01_t_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,5,209,45\"/>\n <area shape=\"rect\" href=\"a01196.html\" title=\" \" alt=\"\" coords=\"5,93,209,133\"/>\n@@ -481,15 +481,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00023_source.html\">fixedcapacitystack.hh</a></li>\n+<li><a class=\"el\" href=\"a00029_source.html\">fixedcapacitystack.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01196.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01196.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"a01193.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::FixedCapacityStack< T, capacity > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00023_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/fixedcapacitystack.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::FixedCapacityStack< T, capacity >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01195.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_fixed_capacity_stack_3_01_t_00_01capacity_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_fixed_capacity_stack_3_01_t_00_01capacity_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_fixed_capacity_stack_3_01_t_00_01capacity_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"257,55,461,95\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"53,5,162,31\"/>\n@@ -478,15 +478,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00023_source.html\">fixedcapacitystack.hh</a></li>\n+<li><a class=\"el\" href=\"a00029_source.html\">fixedcapacitystack.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01200.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01200.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01197.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericLeafNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a56ff1d056f549d38a889a5f6201d7c2b\" id=\"r_a56ff1d056f549d38a889a5f6201d7c2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a></td></tr>\n <tr class=\"separator:a56ff1d056f549d38a889a5f6201d7c2b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a78d2e8afed4a03be36b8c8b6d5d5533b\" id=\"r_a78d2e8afed4a03be36b8c8b6d5d5533b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01200.html#a56ff1d056f549d38a889a5f6201d7c2b\">transformed_type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01200.html#a78d2e8afed4a03be36b8c8b6d5d5533b\">transformed_storage_type</a></td></tr>\n <tr class=\"separator:a78d2e8afed4a03be36b8c8b6d5d5533b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -275,15 +275,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01204.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01204.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01201.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01203.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_templatized_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_templatized_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_templatized_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,29,225,99\"/>\n <area shape=\"rect\" href=\"a01204.html\" title=\" \" alt=\"\" coords=\"563,15,873,113\"/>\n@@ -279,15 +279,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01208.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01208.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01205.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2718d8db626a4e44fab6ae162d3a8159\" id=\"r_a2718d8db626a4e44fab6ae162d3a8159\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNodeTemplate< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">type</a></td></tr>\n <tr class=\"separator:a2718d8db626a4e44fab6ae162d3a8159\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:adf9e43bec2ce06621f833d057ff40e44\" id=\"r_adf9e43bec2ce06621f833d057ff40e44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01208.html#a2718d8db626a4e44fab6ae162d3a8159\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01208.html#adf9e43bec2ce06621f833d057ff40e44\">storage_type</a></td></tr>\n <tr class=\"separator:adf9e43bec2ce06621f833d057ff40e44\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -156,15 +156,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01212.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01212.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01209.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericPowerNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::GenericPowerNodeTransformation< SourceNode, Transformation, TransformedNode >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01211.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_generic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"923,37,1157,91\"/>\n <area shape=\"rect\" href=\"a01204.html\" title=\" \" alt=\"\" coords=\"563,15,873,113\"/>\n@@ -93,19 +93,19 @@\n <area shape=\"rect\" href=\"a01204.html\" title=\" \" alt=\"\" coords=\"5,29,225,99\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"239,61,562,61,562,67,239,67\"/>\n </map>\n </div>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n-<tr class=\"memitem:af11cbb8f56e5e0f62cd20c76e0f0c8e7\" id=\"r_af11cbb8f56e5e0f62cd20c76e0f0c8e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">transform</a> (const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n+<tr class=\"memitem:af11cbb8f56e5e0f62cd20c76e0f0c8e7\" id=\"r_af11cbb8f56e5e0f62cd20c76e0f0c8e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#af11cbb8f56e5e0f62cd20c76e0f0c8e7\">transform</a> (const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n <tr class=\"separator:af11cbb8f56e5e0f62cd20c76e0f0c8e7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:ae10134b6435c658d56d2a37c78507a05\" id=\"r_ae10134b6435c658d56d2a37c78507a05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n+<tr class=\"memitem:ae10134b6435c658d56d2a37c78507a05\" id=\"r_ae10134b6435c658d56d2a37c78507a05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#ae10134b6435c658d56d2a37c78507a05\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n <tr class=\"separator:ae10134b6435c658d56d2a37c78507a05\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a3d9a9e0f27a5e475276e4205621e5c79\" id=\"r_a3d9a9e0f27a5e475276e4205621e5c79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n+<tr class=\"memitem:a3d9a9e0f27a5e475276e4205621e5c79\" id=\"r_a3d9a9e0f27a5e475276e4205621e5c79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#a3d9a9e0f27a5e475276e4205621e5c79\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC ><a class=\"el\" href=\"a00092.html#ga56ec139aa8b8af4e8fd25d3b31b970cd\">::degree</a> > &children)</td></tr>\n <tr class=\"separator:a3d9a9e0f27a5e475276e4205621e5c79\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:ab42ec41914479dc39213ffbf0b96fcbe\" id=\"r_ab42ec41914479dc39213ffbf0b96fcbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01204.html#ab42ec41914479dc39213ffbf0b96fcbe\">recursive</a></td></tr>\n <tr class=\"separator:ab42ec41914479dc39213ffbf0b96fcbe\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -116,29 +116,29 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">const SourceNode & </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n <td class=\"paramtype\">const Transformation & </td>\n <td class=\"paramname\"><em>t</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n- <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n+ <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n <td class=\"paramname\"><em>children</em> </td>\n </tr>\n <tr>\n <td></td>\n <td>)</td>\n <td></td><td></td>\n </tr>\n@@ -158,29 +158,29 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n <td class=\"paramtype\">const Transformation & </td>\n <td class=\"paramname\"><em>t</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n- <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n+ <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n <td class=\"paramname\"><em>children</em> </td>\n </tr>\n <tr>\n <td></td>\n <td>)</td>\n <td></td><td></td>\n </tr>\n@@ -200,29 +200,29 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n <td class=\"paramtype\">const Transformation & </td>\n <td class=\"paramname\"><em>t</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n- <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n+ <td class=\"paramtype\">const std::array< std::shared_ptr< TC >, <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::degree > & </td>\n <td class=\"paramname\"><em>children</em> </td>\n </tr>\n <tr>\n <td></td>\n <td>)</td>\n <td></td><td></td>\n </tr>\n@@ -243,28 +243,28 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">const bool <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n+ <td class=\"memname\">const bool <a class=\"el\" href=\"a01204.html\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01264.html\">GenericPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n </tr>\n </table>\n </td>\n <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">inherited</span></span> </td>\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01216.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01216.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01213.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01215.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_templatized_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_templatized_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_templatized_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,29,316,99\"/>\n <area shape=\"rect\" href=\"a01216.html\" title=\" \" alt=\"\" coords=\"619,22,960,106\"/>\n@@ -279,15 +279,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01220.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01220.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01217.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a91eb0b26c6593dc47b7b05ccea59b44d\" id=\"r_a91eb0b26c6593dc47b7b05ccea59b44d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNodeTemplate< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">type</a></td></tr>\n <tr class=\"separator:a91eb0b26c6593dc47b7b05ccea59b44d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:ad459c392296a41aa198499c721f8914b\" id=\"r_ad459c392296a41aa198499c721f8914b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01220.html#a91eb0b26c6593dc47b7b05ccea59b44d\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01220.html#ad459c392296a41aa198499c721f8914b\">storage_type</a></td></tr>\n <tr class=\"separator:ad459c392296a41aa198499c721f8914b\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -123,15 +123,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01224.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01224.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01221.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::GenericDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01223.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_generic_dynamic_power_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"1009,29,1228,99\"/>\n <area shape=\"rect\" href=\"a01216.html\" title=\" \" alt=\"\" coords=\"619,22,960,106\"/>\n@@ -93,19 +93,19 @@\n <area shape=\"rect\" href=\"a01216.html\" title=\" \" alt=\"\" coords=\"5,29,316,99\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"330,61,618,61,618,67,330,67\"/>\n </map>\n </div>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n-<tr class=\"memitem:a63e0d400d764a3dc8d5f7405e8322c6a\" id=\"r_a63e0d400d764a3dc8d5f7405e8322c6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">transform</a> (const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n+<tr class=\"memitem:a63e0d400d764a3dc8d5f7405e8322c6a\" id=\"r_a63e0d400d764a3dc8d5f7405e8322c6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a63e0d400d764a3dc8d5f7405e8322c6a\">transform</a> (const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n <tr class=\"separator:a63e0d400d764a3dc8d5f7405e8322c6a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a1d0bd277a0159043e898b4a20597d240\" id=\"r_a1d0bd277a0159043e898b4a20597d240\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n+<tr class=\"memitem:a1d0bd277a0159043e898b4a20597d240\" id=\"r_a1d0bd277a0159043e898b4a20597d240\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a1d0bd277a0159043e898b4a20597d240\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n <tr class=\"separator:a1d0bd277a0159043e898b4a20597d240\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a8c26231252b44ac96911a148c7167635\" id=\"r_a8c26231252b44ac96911a148c7167635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n+<tr class=\"memitem:a8c26231252b44ac96911a148c7167635\" id=\"r_a8c26231252b44ac96911a148c7167635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a8c26231252b44ac96911a148c7167635\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)</td></tr>\n <tr class=\"separator:a8c26231252b44ac96911a148c7167635\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a36d08b6a82553e52143dc485bc87282e\" id=\"r_a36d08b6a82553e52143dc485bc87282e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01216.html#a36d08b6a82553e52143dc485bc87282e\">recursive</a></td></tr>\n <tr class=\"separator:a36d08b6a82553e52143dc485bc87282e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -116,15 +116,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">const SourceNode & </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -158,15 +158,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -200,15 +200,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC >::storage_type <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -243,28 +243,28 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">const bool <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n+ <td class=\"memname\">const bool <a class=\"el\" href=\"a01216.html\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01272.html\">GenericDynamicPowerNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n </tr>\n </table>\n </td>\n <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">inherited</span></span> </td>\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01228.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01228.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01225.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01227.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_templatized_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_templatized_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_templatized_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_template_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,29,252,99\"/>\n <area shape=\"rect\" href=\"a01228.html\" title=\" \" alt=\"\" coords=\"536,15,847,113\"/>\n@@ -279,15 +279,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01232.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01232.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01229.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNodeTemplate >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a9c7f4657753bbb8afcecb5be7ed09264\" id=\"r_a9c7f4657753bbb8afcecb5be7ed09264\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNodeTemplate< TC... >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">type</a></td></tr>\n <tr class=\"separator:a9c7f4657753bbb8afcecb5be7ed09264\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:add8b889493a0a7300736fb8ceeb52e64\" id=\"r_add8b889493a0a7300736fb8ceeb52e64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01232.html#a9c7f4657753bbb8afcecb5be7ed09264\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01232.html#add8b889493a0a7300736fb8ceeb52e64\">storage_type</a></td></tr>\n <tr class=\"separator:add8b889493a0a7300736fb8ceeb52e64\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -123,15 +123,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01236.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01236.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01233.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/generictransformationdescriptors.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::GenericCompositeNodeTransformation< SourceNode, Transformation, TransformedNode >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01235.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_generic_composite_node_transformation_3_01_source_node_00_01_transformation_00_01_transformed_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"896,37,1131,91\"/>\n <area shape=\"rect\" href=\"a01228.html\" title=\" \" alt=\"\" coords=\"536,15,847,113\"/>\n@@ -93,19 +93,19 @@\n <area shape=\"rect\" href=\"a01228.html\" title=\" \" alt=\"\" coords=\"5,29,252,99\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"266,61,535,61,535,67,266,67\"/>\n </map>\n </div>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n-<tr class=\"memitem:a2673a334b31c21643e21969c0ac6a98a\" id=\"r_a2673a334b31c21643e21969c0ac6a98a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">transform</a> (const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n+<tr class=\"memitem:a2673a334b31c21643e21969c0ac6a98a\" id=\"r_a2673a334b31c21643e21969c0ac6a98a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a2673a334b31c21643e21969c0ac6a98a\">transform</a> (const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n <tr class=\"separator:a2673a334b31c21643e21969c0ac6a98a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a91d90ba3bb91b6d7bb7d75d8995251e4\" id=\"r_a91d90ba3bb91b6d7bb7d75d8995251e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n+<tr class=\"memitem:a91d90ba3bb91b6d7bb7d75d8995251e4\" id=\"r_a91d90ba3bb91b6d7bb7d75d8995251e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a91d90ba3bb91b6d7bb7d75d8995251e4\">transform</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n <tr class=\"separator:a91d90ba3bb91b6d7bb7d75d8995251e4\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:a84dabf5dfd5db413b81069fb712e9019\" id=\"r_a84dabf5dfd5db413b81069fb712e9019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n+<tr class=\"memitem:a84dabf5dfd5db413b81069fb712e9019\" id=\"r_a84dabf5dfd5db413b81069fb712e9019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::storage_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#a84dabf5dfd5db413b81069fb712e9019\">transform_storage</a> (std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)</td></tr>\n <tr class=\"separator:a84dabf5dfd5db413b81069fb712e9019\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:af1318e760833875048c269c471af03e1\" id=\"r_af1318e760833875048c269c471af03e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01228.html#af1318e760833875048c269c471af03e1\">recursive</a></td></tr>\n <tr class=\"separator:af1318e760833875048c269c471af03e1\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -116,15 +116,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">const SourceNode & </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -158,15 +158,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -200,15 +200,15 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">static <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::storage_type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n+ <td class=\"memname\">static <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a>< TC... >::storage_type <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::transform_storage </td>\n <td>(</td>\n <td class=\"paramtype\">std::shared_ptr< const SourceNode > </td>\n <td class=\"paramname\"><em>s</em>, </td>\n </tr>\n <tr>\n <td class=\"paramkey\"></td>\n <td></td>\n@@ -243,28 +243,28 @@\n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n <tr>\n <td class=\"mlabels-left\">\n <table class=\"memname\">\n <tr>\n- <td class=\"memname\">const bool <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n+ <td class=\"memname\">const bool <a class=\"el\" href=\"a01228.html\">Dune::TypeTree::TemplatizedGenericCompositeNodeTransformation</a>< SourceNode, Transformation, <a class=\"el\" href=\"a01280.html\">GenericCompositeNodeTransformationTemplate</a>< SourceNode, Transformation, TransformedNode >::template <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">result</a> >::recursive</td>\n </tr>\n </table>\n </td>\n <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">inherited</span></span> </td>\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00062_source.html\">generictransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00068_source.html\">generictransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01240.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01240.html", "unified_diff": "@@ -82,15 +82,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::LeafNode Class Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for leaf nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. \n <a href=\"a01240.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00068_source.html\">dune/typetree/leafnode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00071_source.html\">dune/typetree/leafnode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a157d29cab82c4fdb53381f981ecc98df\" id=\"r_a157d29cab82c4fdb53381f981ecc98df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01248.html\">LeafNodeTag</a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01240.html#a157d29cab82c4fdb53381f981ecc98df\">NodeTag</a></td></tr>\n <tr class=\"memdesc:a157d29cab82c4fdb53381f981ecc98df\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type tag that describes a <a class=\"el\" href=\"a01240.html\" title=\"Base class for leaf nodes in a dune-typetree.\">LeafNode</a>. <br /></td></tr>\n <tr class=\"separator:a157d29cab82c4fdb53381f981ecc98df\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -262,15 +262,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a non power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00068_source.html\">leafnode.hh</a></li>\n+<li><a class=\"el\" href=\"a00071_source.html\">leafnode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01244.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01244.html", "unified_diff": "@@ -81,15 +81,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::NodeInterface Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Interface for nodes in a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. \n <a href=\"a01244.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00029_source.html\">dune/typetree/nodeinterface.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00053_source.html\">dune/typetree/nodeinterface.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ad6074e269b64278112cf86caa2298133\" id=\"r_ad6074e269b64278112cf86caa2298133\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef ImplementationDefined </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01244.html#ad6074e269b64278112cf86caa2298133\">NodeTag</a></td></tr>\n <tr class=\"memdesc:ad6074e269b64278112cf86caa2298133\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type tag that describes what kind of node this is. <br /></td></tr>\n <tr class=\"separator:ad6074e269b64278112cf86caa2298133\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a84d7eb90e7b30648892b8278495b5d6a\" id=\"r_a84d7eb90e7b30648892b8278495b5d6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef ImplementationDefined </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01244.html#a84d7eb90e7b30648892b8278495b5d6a\">NodeStorage</a></td></tr>\n@@ -255,15 +255,15 @@\n </div><div class=\"memdoc\">\n \n <p>Whether this is a power node in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00029_source.html\">nodeinterface.hh</a></li>\n+<li><a class=\"el\" href=\"a00053_source.html\">nodeinterface.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01248.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01248.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::LeafNodeTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag designating a leaf node. \n <a href=\"a01248.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag designating a leaf node. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00056_source.html\">nodetags.hh</a></li>\n+<li><a class=\"el\" href=\"a00050_source.html\">nodetags.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01252.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01252.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::PowerNodeTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag designating a power node. \n <a href=\"a01252.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag designating a power node. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00056_source.html\">nodetags.hh</a></li>\n+<li><a class=\"el\" href=\"a00050_source.html\">nodetags.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01256.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01256.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DynamicPowerNodeTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag designating a power node with runtime degree. \n <a href=\"a01256.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag designating a power node with runtime degree. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00056_source.html\">nodetags.hh</a></li>\n+<li><a class=\"el\" href=\"a00050_source.html\">nodetags.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01260.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01260.html", "unified_diff": "@@ -76,19 +76,19 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::CompositeNodeTag Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Tag designating a composite node. \n <a href=\"a01260.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00056_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00050_source.html\">dune/typetree/nodetags.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Tag designating a composite node. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00056_source.html\">nodetags.hh</a></li>\n+<li><a class=\"el\" href=\"a00050_source.html\">nodetags.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01264.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01264.html", "unified_diff": "@@ -75,23 +75,23 @@\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01268.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01268.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01268.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01265.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2ff86d75565a9d1d1acdd34a12b8cb55\" id=\"r_a2ff86d75565a9d1d1acdd34a12b8cb55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< SourceNode, TC, <a class=\"el\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree</a>< SourceNode >::value > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01268.html#a2ff86d75565a9d1d1acdd34a12b8cb55\">type</a></td></tr>\n <tr class=\"separator:a2ff86d75565a9d1d1acdd34a12b8cb55\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -103,15 +103,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01272.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01272.html", "unified_diff": "@@ -75,23 +75,23 @@\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01276.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01276.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01276.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01273.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:adaa8a341b0101e7e5336654133d47c0e\" id=\"r_adaa8a341b0101e7e5336654133d47c0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< SourceNode, TC > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01276.html#adaa8a341b0101e7e5336654133d47c0e\">type</a></td></tr>\n <tr class=\"separator:adaa8a341b0101e7e5336654133d47c0e\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -103,15 +103,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01280.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01280.html", "unified_diff": "@@ -75,23 +75,23 @@\n <div class=\"header\">\n <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01284.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01284.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01284.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01281.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00086_source.html\">dune/typetree/powercompositenodetransformationtemplates.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ae9c1b1f00bb0a1ee622311dff8460ef1\" id=\"r_ae9c1b1f00bb0a1ee622311dff8460ef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< SourceNode, TC... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01284.html#ae9c1b1f00bb0a1ee622311dff8460ef1\">type</a></td></tr>\n <tr class=\"separator:ae9c1b1f00bb0a1ee622311dff8460ef1\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -103,15 +103,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00017_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n+<li><a class=\"el\" href=\"a00086_source.html\">powercompositenodetransformationtemplates.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01288.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01288.html", "unified_diff": "@@ -82,15 +82,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::PowerNode< T, k > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Collect k instances of type T within a <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. \n <a href=\"a01288.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00038_source.html\">dune/typetree/powernode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/powernode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01292.html\">Child</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Access to the type and storage type of the i-th child. <a href=\"a01292.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -1116,15 +1116,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00038_source.html\">powernode.hh</a></li>\n+<li><a class=\"el\" href=\"a00011_source.html\">powernode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01292.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01292.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::PowerNode< T, k >::Child< i > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Access to the type and storage type of the i-th child. \n <a href=\"a01292.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00038_source.html\">dune/typetree/powernode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/powernode.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a36478705f252b4739ce9e2a63fa7a43a\" id=\"r_a36478705f252b4739ce9e2a63fa7a43a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef T </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01292.html#a36478705f252b4739ce9e2a63fa7a43a\">Type</a></td></tr>\n <tr class=\"memdesc:a36478705f252b4739ce9e2a63fa7a43a\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type of the child. <br /></td></tr>\n <tr class=\"separator:a36478705f252b4739ce9e2a63fa7a43a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a010f3af06b3c2eddd61d91044f1605bb\" id=\"r_a010f3af06b3c2eddd61d91044f1605bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef T </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01292.html#a010f3af06b3c2eddd61d91044f1605bb\">type</a></td></tr>\n@@ -136,15 +136,15 @@\n </div><div class=\"memdoc\">\n \n <p>The type of the child. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00038_source.html\">powernode.hh</a></li>\n+<li><a class=\"el\" href=\"a00011_source.html\">powernode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01296.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01296.html", "unified_diff": "@@ -82,15 +82,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::ProxyNode< Node > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class for nodes acting as a proxy for an existing node. \n <a href=\"a01296.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::ProxyNode< Node >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01295.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_proxy_node_3_01_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_proxy_node_3_01_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_proxy_node_3_01_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Base class for nodes acting as a proxy for an existing node.\" alt=\"\" coords=\"23,197,210,237\"/>\n <area shape=\"rect\" href=\"a01316.html\" title=\" \" alt=\"\" coords=\"5,108,228,148\"/>\n@@ -503,15 +503,15 @@\n </div><div class=\"memdoc\">\n \n <p>Mark this class as a non power in the <a class=\"el\" href=\"a00089.html\">dune-typetree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01300.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01300.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::StaticChildAccessors< ProxiedNode > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin class providing methods for child access with compile-time parameter. \n <a href=\"a01300.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::StaticChildAccessors< ProxiedNode >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01299.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Mixin class providing methods for child access with compile-time parameter.\" alt=\"\" coords=\"5,67,192,107\"/>\n <area shape=\"rect\" href=\"a01312.html\" title=\" \" alt=\"\" coords=\"625,37,829,77\"/>\n@@ -340,15 +340,15 @@\n </div><div class=\"memdoc\">\n \n <p>Sets the i-th child to the passed-in value. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01308.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01308.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::StaticChildAccessors< ProxiedNode >::Child< k > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Access to the type and storage type of the i-th child. \n <a href=\"a01308.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::StaticChildAccessors< ProxiedNode >::Child< k >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01307.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_1_1_child_3_01k_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_1_1_child_3_01k_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_static_child_accessors_3_01_proxied_node_01_4_1_1_child_3_01k_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Access to the type and storage type of the i-th child.\" alt=\"\" coords=\"5,93,192,148\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"21,5,176,45\"/>\n@@ -92,15 +92,15 @@\n </map>\n </div>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<typename ProxiedNode><br />\n template<std::size_t k><br />\n struct Dune::TypeTree::StaticChildAccessors< ProxiedNode >::Child< k ></div><p>Access to the type and storage type of the i-th child. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01312.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01312.html", "unified_diff": "@@ -78,15 +78,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DynamicChildAccessors< ProxiedNode > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin class providing methods for child access with run-time parameter. \n <a href=\"a01312.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::DynamicChildAccessors< ProxiedNode >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01311.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_dynamic_child_accessors_3_01_proxied_node_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_dynamic_child_accessors_3_01_proxied_node_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_dynamic_child_accessors_3_01_proxied_node_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Mixin class providing methods for child access with run-time parameter.\" alt=\"\" coords=\"241,37,445,77\"/>\n <area shape=\"rect\" href=\"a01312.html\" title=\" \" alt=\"\" coords=\"553,37,757,77\"/>\n@@ -524,15 +524,15 @@\n </div><div class=\"memdoc\">\n \n <p>Sets the i-th child to the passed-in value. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01316.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01316.html", "unified_diff": "@@ -91,15 +91,15 @@\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"119,162,119,197,114,197,114,162\"/>\n </map>\n </div>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<typename Node, typename <a class=\"el\" href=\"a00092.html#ga69a1959f7e199cc23ff490487dc683b9\">NodeTag</a>><br />\n struct Dune::TypeTree::ProxyNodeBase< Node, NodeTag ></div><p>Tag-based dispatch to appropriate base class that provides necessary functionality. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01320.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01320.html", "unified_diff": "@@ -76,20 +76,20 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::ProxyNodeBase< Node, LeafNodeTag > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01240.html\" title=\"Base class for leaf nodes in a dune-typetree.\">LeafNode</a>. \n <a href=\"a01320.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template<typename Node><br />\n struct Dune::TypeTree::ProxyNodeBase< Node, LeafNodeTag ></div><p><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01240.html\" title=\"Base class for leaf nodes in a dune-typetree.\">LeafNode</a>. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01324.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01324.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01076.html\" title=\"Base class for composite nodes based on variadic templates.\">CompositeNode</a>. \n <a href=\"a01324.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01323.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_composite_node_tag_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_composite_node_tag_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_composite_node_tag_01_4_inherit__map\">\n <area shape=\"rect\" title=\"ProxyNode base class for CompositeNode.\" alt=\"\" coords=\"5,197,236,237\"/>\n <area shape=\"rect\" href=\"a01300.html\" title=\" \" alt=\"\" coords=\"27,108,214,148\"/>\n@@ -338,15 +338,15 @@\n </div><div class=\"memdoc\">\n \n <p>Sets the i-th child to the passed-in value. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01328.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01328.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01288.html\" title=\"Collect k instances of type T within a dune-typetree.\">PowerNode</a>. \n <a href=\"a01328.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01327.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_power_node_tag_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_power_node_tag_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_power_node_tag_01_4_inherit__map\">\n <area shape=\"rect\" title=\"ProxyNode base class for PowerNode.\" alt=\"\" coords=\"807,37,1009,77\"/>\n <area shape=\"rect\" href=\"a01312.html\" title=\" \" alt=\"\" coords=\"553,37,757,77\"/>\n@@ -545,15 +545,15 @@\n </div><div class=\"memdoc\">\n \n <p>Sets the i-th child to the passed-in value. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01332.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01332.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00092.html\">Nodes</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01296.html\" title=\"Base class for nodes acting as a proxy for an existing node.\">ProxyNode</a> base class for <a class=\"el\" href=\"a01084.html\" title=\"Collect multiple instances of type T within a dune-typetree.\">DynamicPowerNode</a>. \n <a href=\"a01332.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00008_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00080_source.html\">dune/typetree/proxynode.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01331.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_dynamic_power_node_tag_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_dynamic_power_node_tag_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_proxy_node_base_3_01_node_00_01_dynamic_power_node_tag_01_4_inherit__map\">\n <area shape=\"rect\" title=\"ProxyNode base class for DynamicPowerNode.\" alt=\"\" coords=\"807,37,1061,77\"/>\n <area shape=\"rect\" href=\"a01312.html\" title=\" \" alt=\"\" coords=\"553,37,757,77\"/>\n@@ -545,15 +545,15 @@\n </div><div class=\"memdoc\">\n \n <p>Sets the i-th child to the passed-in value. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00008_source.html\">proxynode.hh</a></li>\n+<li><a class=\"el\" href=\"a00080_source.html\">proxynode.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01336.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01336.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01333.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleLeafNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:afa37c301eb96854dbe3b8ff418771200\" id=\"r_afa37c301eb96854dbe3b8ff418771200\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a></td></tr>\n <tr class=\"separator:afa37c301eb96854dbe3b8ff418771200\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a762f8cd1661843ca5b67d9d6c26ab790\" id=\"r_a762f8cd1661843ca5b67d9d6c26ab790\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01336.html#afa37c301eb96854dbe3b8ff418771200\">transformed_type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01336.html#a762f8cd1661843ca5b67d9d6c26ab790\">transformed_storage_type</a></td></tr>\n <tr class=\"separator:a762f8cd1661843ca5b67d9d6c26ab790\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -235,15 +235,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01340.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01340.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01337.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01344.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n@@ -218,15 +218,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01344.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01344.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01341.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimplePowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a1de73f0bdcf33ec83d31c03075c0d499\" id=\"r_a1de73f0bdcf33ec83d31c03075c0d499\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< TC, <a class=\"el\" href=\"a00092.html#gad5f09e67114a2b620494f80cff734a02\">StaticDegree</a>< SourceNode >::value > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">type</a></td></tr>\n <tr class=\"separator:a1de73f0bdcf33ec83d31c03075c0d499\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:ab028ec256a6d198194c815b362ab2801\" id=\"r_ab028ec256a6d198194c815b362ab2801\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01344.html#a1de73f0bdcf33ec83d31c03075c0d499\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01344.html#ab028ec256a6d198194c815b362ab2801\">storage_type</a></td></tr>\n <tr class=\"separator:ab028ec256a6d198194c815b362ab2801\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -156,15 +156,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01348.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01348.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01345.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01352.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n@@ -218,15 +218,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01352.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01352.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01349.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:aa95f83212975c2470f0361b94890c671\" id=\"r_aa95f83212975c2470f0361b94890c671\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< TC > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">type</a></td></tr>\n <tr class=\"separator:aa95f83212975c2470f0361b94890c671\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:afd8a1d62b3d68c6118db28267aaed0c4\" id=\"r_afd8a1d62b3d68c6118db28267aaed0c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01352.html#aa95f83212975c2470f0361b94890c671\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01352.html#afd8a1d62b3d68c6118db28267aaed0c4\">storage_type</a></td></tr>\n <tr class=\"separator:afd8a1d62b3d68c6118db28267aaed0c4\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -123,15 +123,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01356.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01356.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01353.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01360.html\">result</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n@@ -218,15 +218,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01360.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01360.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01357.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::SimpleCompositeNodeTransformation< SourceNode, Transformation, TransformedNode >::result< TC > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00065_source.html\">dune/typetree/simpletransformationdescriptors.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2e90f99cd656f209ce6044215c74bddd\" id=\"r_a2e90f99cd656f209ce6044215c74bddd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef TransformedNode< TC... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">type</a></td></tr>\n <tr class=\"separator:a2e90f99cd656f209ce6044215c74bddd\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a10f5ad6862df441221281b52160ed3b0\" id=\"r_a10f5ad6862df441221281b52160ed3b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::shared_ptr< <a class=\"el\" href=\"a01360.html#a2e90f99cd656f209ce6044215c74bddd\">type</a> > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01360.html#a10f5ad6862df441221281b52160ed3b0\">storage_type</a></td></tr>\n <tr class=\"separator:a10f5ad6862df441221281b52160ed3b0\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -123,15 +123,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00035_source.html\">simpletransformationdescriptors.hh</a></li>\n+<li><a class=\"el\" href=\"a00065_source.html\">simpletransformationdescriptors.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01364.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01364.html", "unified_diff": "@@ -80,15 +80,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TransformTree< SourceTree, Transformation, Tag, recursive > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00094.html\">Transformation</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Transform a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. \n <a href=\"a01364.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00020_source.html\">dune/typetree/transformation.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00077_source.html\">dune/typetree/transformation.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:aa01b86c1992348c37a370a6eb7e9cd65\" id=\"r_aa01b86c1992348c37a370a6eb7e9cd65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef transformed_type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a></td></tr>\n <tr class=\"memdesc:aa01b86c1992348c37a370a6eb7e9cd65\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The type of the transformed tree. <br /></td></tr>\n <tr class=\"separator:aa01b86c1992348c37a370a6eb7e9cd65\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a0fa8df89b999152babfee3749e5e03fd\" id=\"r_a0fa8df89b999152babfee3749e5e03fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01364.html#aa01b86c1992348c37a370a6eb7e9cd65\">type</a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01364.html#a0fa8df89b999152babfee3749e5e03fd\">Type</a></td></tr>\n@@ -397,15 +397,15 @@\n </table>\n </div><div class=\"memdoc\">\n <p>Apply transformation to storage type of an existing tree, returning a heap-allocated storage type instance of the transformed tree. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00020_source.html\">transformation.hh</a></li>\n+<li><a class=\"el\" href=\"a00077_source.html\">transformation.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01372.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01372.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"a01369.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Detail::ContainerFactory< LeafToValue > Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a98d48631301c7308b5e39fc3dadd3094\" id=\"r_a98d48631301c7308b5e39fc3dadd3094\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01372.html#a98d48631301c7308b5e39fc3dadd3094\">ContainerFactory</a> (LeafToValue leafToValue)</td></tr>\n <tr class=\"memdesc:a98d48631301c7308b5e39fc3dadd3094\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Create <a class=\"el\" href=\"a01372.html\">ContainerFactory</a>. <br /></td></tr>\n <tr class=\"separator:a98d48631301c7308b5e39fc3dadd3094\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:a0aacb9523b1b7a95a3f445a40808d126\" id=\"r_a0aacb9523b1b7a95a3f445a40808d126\"><td class=\"memTemplParams\" colspan=\"2\">template<class Node > </td></tr>\n@@ -157,15 +157,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00014_source.html\">treecontainer.hh</a></li>\n+<li><a class=\"el\" href=\"a00017_source.html\">treecontainer.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01376.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01376.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"a01373.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Detail::TreeContainerVectorBackend< Container > Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:aa5c7b22f3a5474e026210ff852c8c853\" id=\"r_aa5c7b22f3a5474e026210ff852c8c853\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01376.html#aa5c7b22f3a5474e026210ff852c8c853\">TreeContainerVectorBackend</a> (Container &&container)</td></tr>\n <tr class=\"memdesc:aa5c7b22f3a5474e026210ff852c8c853\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Move the passed container into the internal storage. <br /></td></tr>\n <tr class=\"separator:aa5c7b22f3a5474e026210ff852c8c853\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:abd7766f86dea240d851cc17510b5b1f5\" id=\"r_abd7766f86dea240d851cc17510b5b1f5\"><td class=\"memTemplParams\" colspan=\"2\">template<class Tree , TypeTreeConcept< Tree > = true> </td></tr>\n@@ -348,15 +348,15 @@\n </div><div class=\"memdoc\">\n \n <p>Resize the (nested) container depending on the degree of the tree nodes. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00014_source.html\">treecontainer.hh</a></li>\n+<li><a class=\"el\" href=\"a00017_source.html\">treecontainer.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01380.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01380.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"a01377.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue< LeafToValue > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00017_source.html\">dune/typetree/treecontainer.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a0ae3fd8805cbbf281be705c64f8995b7\" id=\"r_a0ae3fd8805cbbf281be705c64f8995b7\"><td class=\"memTemplParams\" colspan=\"2\">template<class Node > </td></tr>\n <tr class=\"memitem:a0ae3fd8805cbbf281be705c64f8995b7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">auto </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01380.html#a0ae3fd8805cbbf281be705c64f8995b7\">operator()</a> (const Node &node) const</td></tr>\n <tr class=\"separator:a0ae3fd8805cbbf281be705c64f8995b7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -116,15 +116,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00014_source.html\">treecontainer.hh</a></li>\n+<li><a class=\"el\" href=\"a00017_source.html\">treecontainer.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01392.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01392.html", "unified_diff": "@@ -81,15 +81,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::HybridTreePath< T > Class Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>A hybrid version of TreePath that supports both compile time and run time indices. \n <a href=\"a01392.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:afb240bc79a76c347343ff7ff4de81e7f\" id=\"r_afb240bc79a76c347343ff7ff4de81e7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">using </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01392.html#afb240bc79a76c347343ff7ff4de81e7f\">index_sequence</a> = std::index_sequence_for< T... ></td></tr>\n <tr class=\"memdesc:afb240bc79a76c347343ff7ff4de81e7f\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">An <code>index_sequence</code> for the entries in this <code><a class=\"el\" href=\"a01392.html\" title=\"A hybrid version of TreePath that supports both compile time and run time indices.\">HybridTreePath</a></code>. <br /></td></tr>\n <tr class=\"separator:afb240bc79a76c347343ff7ff4de81e7f\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table><table class=\"memberdecls\">\n@@ -647,15 +647,15 @@\n </div><div class=\"memdoc\">\n \n <p>Get the size (length) of this path. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01396.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01396.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathSize< typename > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01400.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01400.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPushBack< typename, size_t > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01404.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01404.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPushFront< typename, size_t > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01408.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01408.html", "unified_diff": "@@ -85,15 +85,15 @@\n <area shape=\"rect\" href=\"a01408.html\" title=\" \" alt=\"\" coords=\"377,15,561,84\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"194,47,377,47,377,52,194,52\"/>\n <area shape=\"rect\" href=\"a01444.html\" title=\" \" alt=\"\" coords=\"611,7,817,91\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"575,47,610,47,610,52,575,52\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01412.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01412.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathFront< typename > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01416.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01416.html", "unified_diff": "@@ -85,15 +85,15 @@\n <area shape=\"rect\" href=\"a01416.html\" title=\" \" alt=\"\" coords=\"383,15,575,84\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"193,47,383,47,383,52,193,52\"/>\n <area shape=\"rect\" href=\"a01456.html\" title=\" \" alt=\"\" coords=\"624,7,831,91\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"588,47,624,47,624,52,588,52\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01420.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01420.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPopFront< typename > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01424.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01424.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathConcat< typename, typename > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01428.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01428.html", "unified_diff": "@@ -73,27 +73,27 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathSize< HybridTreePath< index_constant< i >... > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePathSize< HybridTreePath< index_constant< i >... > >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01427.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_path_size_3_01_hybrid_tree_path_3_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_path_size_3_01_hybrid_tree_path_3_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_path_size_3_01_hybrid_tree_path_3_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"10,79,187,133\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,5,192,31\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"101,44,101,79,96,79,96,44\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01432.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01432.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01429.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:aefbb54e742b2ca3f1950555744ac8164\" id=\"r_aefbb54e742b2ca3f1950555744ac8164\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >..., index_constant< k > > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01432.html#aefbb54e742b2ca3f1950555744ac8164\">type</a></td></tr>\n <tr class=\"separator:aefbb54e742b2ca3f1950555744ac8164\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01436.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01436.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01433.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a43ee9f962a011d8f93d3849c59370640\" id=\"r_a43ee9f962a011d8f93d3849c59370640\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< k >, index_constant< i >... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01436.html#a43ee9f962a011d8f93d3849c59370640\">type</a></td></tr>\n <tr class=\"separator:a43ee9f962a011d8f93d3849c59370640\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01440.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01440.html", "unified_diff": "@@ -73,27 +73,27 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< k > > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< k > > >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01439.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_01_4_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_01_4_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_01_4_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,79,180,133\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"22,5,163,31\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"95,44,95,79,90,79,90,44\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01444.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01444.html", "unified_diff": "@@ -73,29 +73,29 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01443.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_path_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"611,7,817,91\"/>\n <area shape=\"rect\" href=\"a01408.html\" title=\" \" alt=\"\" coords=\"377,15,561,84\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"575,47,610,47,610,52,575,52\"/>\n <area shape=\"rect\" href=\"a01408.html\" title=\" \" alt=\"\" coords=\"5,29,180,69\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"194,47,377,47,377,52,194,52\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01448.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01448.html", "unified_diff": "@@ -73,27 +73,27 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01447.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_path_front_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_00_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_path_front_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_00_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_path_front_3_01_hybrid_tree_path_3_01index__constant_3_01k_01_4_00_01index__constant_3_01i_01_4_8_8_8_01_4_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,79,183,148\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"23,5,165,31\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"97,44,97,79,91,79,91,44\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01452.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01452.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01449.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< k > >, i... > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a152d8da9bd9d3d37a29fcb321baae6c2\" id=\"r_a152d8da9bd9d3d37a29fcb321baae6c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01452.html#a152d8da9bd9d3d37a29fcb321baae6c2\">type</a></td></tr>\n <tr class=\"separator:a152d8da9bd9d3d37a29fcb321baae6c2\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01456.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01456.html", "unified_diff": "@@ -73,29 +73,29 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... >, i... > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePathPopBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... >, i... >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01455.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_path_pop_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_00_01i_8_8_8_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_path_pop_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_00_01i_8_8_8_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_path_pop_back_3_01_hybrid_tree_path_3_01index__constant_3_01j_01_4_00_01index__constant_3_01k_01_4_00_01index__constant_3_01l_01_4_8_8_8_01_4_00_01i_8_8_8_01_4_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"624,7,831,91\"/>\n <area shape=\"rect\" href=\"a01416.html\" title=\" \" alt=\"\" coords=\"383,15,575,84\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"588,47,624,47,624,52,588,52\"/>\n <area shape=\"rect\" href=\"a01416.html\" title=\" \" alt=\"\" coords=\"5,29,180,69\"/>\n <area shape=\"poly\" title=\" \" alt=\"\" coords=\"193,47,383,47,383,52,193,52\"/>\n </map>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01460.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01460.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01457.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ab54b57efb5a8329a61818956bbc27a8a\" id=\"r_ab54b57efb5a8329a61818956bbc27a8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01460.html#ab54b57efb5a8329a61818956bbc27a8a\">type</a></td></tr>\n <tr class=\"separator:ab54b57efb5a8329a61818956bbc27a8a\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01464.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01464.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01461.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00093.html\">TreePath</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00041_source.html\">dune/typetree/treepath.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00062_source.html\">dune/typetree/treepath.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ada5d2db63bce0172c5fd4ef8cea79c19\" id=\"r_ada5d2db63bce0172c5fd4ef8cea79c19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01392.html\">HybridTreePath</a>< index_constant< i >..., index_constant< k >... > </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01464.html#ada5d2db63bce0172c5fd4ef8cea79c19\">type</a></td></tr>\n <tr class=\"separator:ada5d2db63bce0172c5fd4ef8cea79c19\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00041_source.html\">treepath.hh</a></li>\n+<li><a class=\"el\" href=\"a00062_source.html\">treepath.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01468.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01468.html", "unified_diff": "@@ -73,15 +73,15 @@\n </div>\n </div><!-- top -->\n <div class=\"header\">\n <div class=\"headertitle\"><div class=\"title\">Dune::first_type< T > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01472.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01472.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01469.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::first_type< T0, T... > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a86292d90287ae32933442f183d478e62\" id=\"r_a86292d90287ae32933442f183d478e62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef T0 </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01472.html#a86292d90287ae32933442f183d478e62\">type</a></td></tr>\n <tr class=\"separator:a86292d90287ae32933442f183d478e62\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01476.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01476.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01473.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag< T > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01484.html\">no</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01480.html\">yes</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -191,15 +191,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if class T defines a NodeTag. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01480.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01480.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01477.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag< T >::yes Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a3192df83f6a29fbfebeee8b4b6eaf0ca\" id=\"r_a3192df83f6a29fbfebeee8b4b6eaf0ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01480.html#a3192df83f6a29fbfebeee8b4b6eaf0ca\">dummy</a> [1]</td></tr>\n <tr class=\"separator:a3192df83f6a29fbfebeee8b4b6eaf0ca\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01484.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01484.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01481.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag< T >::no Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a75441ea51bdc776b367c2a8c3b868300\" id=\"r_a75441ea51bdc776b367c2a8c3b868300\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01484.html#a75441ea51bdc776b367c2a8c3b868300\">dummy</a> [2]</td></tr>\n <tr class=\"separator:a75441ea51bdc776b367c2a8c3b868300\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01488.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01488.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01485.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag_value< T, V > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01492.html\">maybe</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01500.html\">no</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -193,15 +193,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if class T defines a NodeTag of type V. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01492.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01492.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01489.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag_value< T, V >::maybe< N > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a94ff68b96ae845cae3f6d627f3b5a028\" id=\"r_a94ff68b96ae845cae3f6d627f3b5a028\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01492.html#a94ff68b96ae845cae3f6d627f3b5a028\">dummy</a> [N+1]</td></tr>\n <tr class=\"separator:a94ff68b96ae845cae3f6d627f3b5a028\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -103,15 +103,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01496.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01496.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01493.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag_value< T, V >::yes Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a5e55794068fc41f0874216ce5c3490b9\" id=\"r_a5e55794068fc41f0874216ce5c3490b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01496.html#a5e55794068fc41f0874216ce5c3490b9\">dummy</a> [2]</td></tr>\n <tr class=\"separator:a5e55794068fc41f0874216ce5c3490b9\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01500.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01500.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01497.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_node_tag_value< T, V >::no Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:ad8b08c8a2e083b49c652c94aaaa23d91\" id=\"r_ad8b08c8a2e083b49c652c94aaaa23d91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01500.html#ad8b08c8a2e083b49c652c94aaaa23d91\">dummy</a> [1]</td></tr>\n <tr class=\"separator:ad8b08c8a2e083b49c652c94aaaa23d91\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01504.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01504.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01501.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag< T > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01512.html\">no</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01508.html\">yes</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -191,15 +191,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if class T defines an ImplementationTag. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01508.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01508.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01505.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag< T >::yes Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a6d85e10ee3fda0b59a07a1bedd2efd32\" id=\"r_a6d85e10ee3fda0b59a07a1bedd2efd32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01508.html#a6d85e10ee3fda0b59a07a1bedd2efd32\">dummy</a> [1]</td></tr>\n <tr class=\"separator:a6d85e10ee3fda0b59a07a1bedd2efd32\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01512.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01512.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01509.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag< T >::no Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a16f6850149a28fedb189d6df08f5a94f\" id=\"r_a16f6850149a28fedb189d6df08f5a94f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01512.html#a16f6850149a28fedb189d6df08f5a94f\">dummy</a> [2]</td></tr>\n <tr class=\"separator:a16f6850149a28fedb189d6df08f5a94f\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01516.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01516.html", "unified_diff": "@@ -78,15 +78,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01513.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag_value< T, V > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01520.html\">maybe</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01528.html\">no</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n@@ -193,15 +193,15 @@\n </div><div class=\"memdoc\">\n \n <p>True if class T defines an ImplementationTag of type V. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01520.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01520.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01517.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag_value< T, V >::maybe< N > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a599b42ba6b2a5d0f827cdc9bb67a4718\" id=\"r_a599b42ba6b2a5d0f827cdc9bb67a4718\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01520.html#a599b42ba6b2a5d0f827cdc9bb67a4718\">dummy</a> [N+1]</td></tr>\n <tr class=\"separator:a599b42ba6b2a5d0f827cdc9bb67a4718\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -103,15 +103,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01524.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01524.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01521.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag_value< T, V >::yes Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a785da89b03a035b24788f677da3344cb\" id=\"r_a785da89b03a035b24788f677da3344cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01524.html#a785da89b03a035b24788f677da3344cb\">dummy</a> [2]</td></tr>\n <tr class=\"separator:a785da89b03a035b24788f677da3344cb\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01528.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01528.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> |\n <a href=\"a01525.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::has_implementation_tag_value< T, V >::no Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:aa8ccfe6f4dff783e7222fe87254655aa\" id=\"r_aa8ccfe6f4dff783e7222fe87254655aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01528.html#aa8ccfe6f4dff783e7222fe87254655aa\">dummy</a> [1]</td></tr>\n <tr class=\"separator:aa8ccfe6f4dff783e7222fe87254655aa\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01532.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01532.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"summary\">\n <a href=\"#pub-types\">Public Types</a> |\n <a href=\"a01529.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::AlwaysVoid< typename > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a56294a12e63e763b9e82a36d503be309\" id=\"r_a56294a12e63e763b9e82a36d503be309\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01532.html#a56294a12e63e763b9e82a36d503be309\">type</a></td></tr>\n <tr class=\"separator:a56294a12e63e763b9e82a36d503be309\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <h2 class=\"groupheader\">Member Typedef Documentation</h2>\n@@ -101,15 +101,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01536.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01536.html", "unified_diff": "@@ -76,20 +76,20 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::meta_function Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Marker tag declaring a meta function. \n <a href=\"a01536.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Marker tag declaring a meta function. </p>\n <p>Just inherit from this type to cause lazy evaluation </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01540.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01540.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::lazy_evaluate< F > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Helper meta function to delay evaluation of F. \n <a href=\"a01540.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a699cb90460ba44cc0a4e5197b409d18d\" id=\"r_a699cb90460ba44cc0a4e5197b409d18d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef F::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01540.html#a699cb90460ba44cc0a4e5197b409d18d\">type</a></td></tr>\n <tr class=\"separator:a699cb90460ba44cc0a4e5197b409d18d\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n@@ -107,15 +107,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01544.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01544.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::lazy_identity< F > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Identity function. \n <a href=\"a01544.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a4144fb6426f024627ed86c44480f17c7\" id=\"r_a4144fb6426f024627ed86c44480f17c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef F </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01544.html#a4144fb6426f024627ed86c44480f17c7\">type</a></td></tr>\n <tr class=\"separator:a4144fb6426f024627ed86c44480f17c7\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n@@ -107,15 +107,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01548.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01548.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::evaluate_if_meta_function< F > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Meta function that evaluates its argument iff it inherits from <a class=\"el\" href=\"a01536.html\" title=\"Marker tag declaring a meta function.\">meta_function</a>. \n <a href=\"a01548.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a06a6cc811119a86e04828a84c0435588\" id=\"r_a06a6cc811119a86e04828a84c0435588\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::conditional< std::is_base_of< <a class=\"el\" href=\"a01536.html\">meta_function</a>, F >::value, <a class=\"el\" href=\"a01540.html\">lazy_evaluate</a>< F >, <a class=\"el\" href=\"a01544.html\">lazy_identity</a>< F > >::type::type </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01548.html#a06a6cc811119a86e04828a84c0435588\">type</a></td></tr>\n <tr class=\"separator:a06a6cc811119a86e04828a84c0435588\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n@@ -107,15 +107,15 @@\n </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01552.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01552.html", "unified_diff": "@@ -76,15 +76,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::IsTreePath< T > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Check if type represents a tree path. \n <a href=\"a01552.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00044_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00014_source.html\">dune/typetree/typetraits.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::IsTreePath< T >:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01551.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_is_tree_path_3_01_t_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_is_tree_path_3_01_t_01_4_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_is_tree_path_3_01_t_01_4_inherit__map\">\n <area shape=\"rect\" title=\"Check if type represents a tree path.\" alt=\"\" coords=\"8,93,225,119\"/>\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"5,5,228,45\"/>\n@@ -98,15 +98,15 @@\n <dl class=\"tparams\"><dt>Template Parameters</dt><dd>\n <table class=\"tparams\">\n <tr><td class=\"paramname\">T</td><td>Check if this type represents a tree path </td></tr>\n </table>\n </dd>\n </dl>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00044_source.html\">typetraits.hh</a></li>\n+<li><a class=\"el\" href=\"a00014_source.html\">typetraits.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01556.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01556.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreeInfo< Tree, Tag > Struct Template Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Struct for obtaining some basic structural information about a <a class=\"el\" href=\"a00097.html\">TypeTree</a>. \n <a href=\"a01556.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00047_source.html\">dune/typetree/utility.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00035_source.html\">dune/typetree/utility.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a57865e1039b7173227a68ace3595af99\" id=\"r_a57865e1039b7173227a68ace3595af99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const std::size_t </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01556.html#a57865e1039b7173227a68ace3595af99\">depth</a> = NodeInfo::depth</td></tr>\n <tr class=\"memdesc:a57865e1039b7173227a68ace3595af99\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">The depth of the <a class=\"el\" href=\"a00097.html\">TypeTree</a>. <br /></td></tr>\n <tr class=\"separator:a57865e1039b7173227a68ace3595af99\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n <tr class=\"memitem:af40f1e154afb15491116809ef2245b4c\" id=\"r_af40f1e154afb15491116809ef2245b4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const std::size_t </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01556.html#af40f1e154afb15491116809ef2245b4c\">nodeCount</a> = NodeInfo::nodeCount</td></tr>\n@@ -184,15 +184,15 @@\n </div><div class=\"memdoc\">\n \n <p>The total number of nodes in the <a class=\"el\" href=\"a00097.html\">TypeTree</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00047_source.html\">utility.hh</a></li>\n+<li><a class=\"el\" href=\"a00035_source.html\">utility.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01560.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01560.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DefaultVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> visitors. \n <a href=\"a01560.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::DefaultVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01559.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_default_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_default_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_default_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Visitor interface and base class for TypeTree visitors.\" alt=\"\" coords=\"117,5,318,31\"/>\n <area shape=\"rect\" href=\"a01600.html\" title=\"Convenience base class for visiting the direct children of a node.\" alt=\"\" coords=\"5,79,211,119\"/>\n@@ -451,15 +451,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01564.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01564.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DefaultPairVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Visitor interface and base class for visitors of pairs of TypeTrees. \n <a href=\"a01564.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::DefaultPairVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01563.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_default_pair_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_default_pair_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_default_pair_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Visitor interface and base class for visitors of pairs of TypeTrees.\" alt=\"\" coords=\"120,5,307,45\"/>\n <area shape=\"rect\" href=\"a01608.html\" title=\"Convenience base class for visiting the direct children of a node pair.\" alt=\"\" coords=\"5,93,211,133\"/>\n@@ -514,15 +514,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01568.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01568.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Experimental::DefaultHybridVisitor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Hybrid visitor interface and base class for <a class=\"el\" href=\"a00097.html\">TypeTree</a> hybrid visitors. \n <a href=\"a01568.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::Experimental::DefaultHybridVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01567.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_experimental_1_1_default_hybrid_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_experimental_1_1_default_hybrid_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_experimental_1_1_default_hybrid_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Hybrid visitor interface and base class for TypeTree hybrid visitors.\" alt=\"\" coords=\"5,37,204,77\"/>\n <area shape=\"rect\" href=\"a01620.html\" title=\" \" alt=\"\" coords=\"252,5,451,45\"/>\n@@ -501,15 +501,15 @@\n </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>The result of applying this visitor to u. </dd></dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01572.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01572.html", "unified_diff": "@@ -78,15 +78,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::VisitDirectChildren Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin base class for visitors that only want to visit the direct children of a node. \n <a href=\"a01572.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::VisitDirectChildren:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01571.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_visit_direct_children_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_visit_direct_children_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_visit_direct_children_inherit__map\">\n <area shape=\"rect\" title=\"Mixin base class for visitors that only want to visit the direct children of a node.\" alt=\"\" coords=\"131,5,314,45\"/>\n <area shape=\"rect\" href=\"a01608.html\" title=\"Convenience base class for visiting the direct children of a node pair.\" alt=\"\" coords=\"5,93,211,133\"/>\n@@ -102,15 +102,15 @@\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01576.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Mixin base class for visitors that only want to visit the direct children of a node. </p>\n <p>This mixin class will reject all children presented to it, causing the algorithm to only visit the root node and call <a class=\"el\" href=\"a01560.html#a6b183fe30f42681326f449b92adee39b\" title=\"Method for parent-child traversal.\">DefaultVisitor::beforeChild()</a> and <a class=\"el\" href=\"a01560.html#a4c3044017e14fba2f79a4985ab051582\" title=\"Method for child-parent traversal.\">DefaultVisitor::afterChild()</a> for its direct children. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01576.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01576.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::VisitDirectChildren::VisitChild< Node1, Child1, Node2, Child2, TreePath > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Template struct for determining whether or not to visit a given child. \n <a href=\"a01576.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a0a8eca77f9c305ce340a43776408de70\" id=\"r_a0a8eca77f9c305ce340a43776408de70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01576.html#a0a8eca77f9c305ce340a43776408de70\">value</a> = false</td></tr>\n <tr class=\"memdesc:a0a8eca77f9c305ce340a43776408de70\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Do not visit any child. <br /></td></tr>\n <tr class=\"separator:a0a8eca77f9c305ce340a43776408de70\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -118,15 +118,15 @@\n </div><div class=\"memdoc\">\n \n <p>Do not visit any child. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01580.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01580.html", "unified_diff": "@@ -78,15 +78,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::VisitTree Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin base class for visitors that want to visit the complete tree. \n <a href=\"a01580.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::VisitTree:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01579.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_visit_tree_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_visit_tree_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_visit_tree_inherit__map\">\n <area shape=\"rect\" title=\"Mixin base class for visitors that want to visit the complete tree.\" alt=\"\" coords=\"5,109,179,134\"/>\n <area shape=\"rect\" href=\"a01620.html\" title=\" \" alt=\"\" coords=\"227,5,425,45\"/>\n@@ -108,15 +108,15 @@\n <tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Template struct for determining whether or not to visit a given child. <a href=\"a01584.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Mixin base class for visitors that want to visit the complete tree. </p>\n <p>This mixin class will accept all children presented to it and thus make the iterator traverse the entire tree. </p>\n </div><hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01584.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01584.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::VisitTree::VisitChild< Node1, Child1, Node2, Child2, TreePath > Struct Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Template struct for determining whether or not to visit a given child. \n <a href=\"a01584.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a133b8eac4c63e87699e8aeab25f59e79\" id=\"r_a133b8eac4c63e87699e8aeab25f59e79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const bool </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01584.html#a133b8eac4c63e87699e8aeab25f59e79\">value</a> = true</td></tr>\n <tr class=\"memdesc:a133b8eac4c63e87699e8aeab25f59e79\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Visit any child. <br /></td></tr>\n <tr class=\"separator:a133b8eac4c63e87699e8aeab25f59e79\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -118,15 +118,15 @@\n </div><div class=\"memdoc\">\n \n <p>Visit any child. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01588.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01588.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::StaticTraversal Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin base class for visitors that require a static TreePath during traversal. \n <a href=\"a01588.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::StaticTraversal:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01587.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_static_traversal_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_static_traversal_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_static_traversal_inherit__map\">\n <area shape=\"rect\" title=\"Mixin base class for visitors that require a static TreePath during traversal.\" alt=\"\" coords=\"5,45,215,70\"/>\n <area shape=\"rect\" href=\"a01620.html\" title=\" \" alt=\"\" coords=\"263,5,461,45\"/>\n@@ -131,15 +131,15 @@\n </div><div class=\"memdoc\">\n \n <p>Use the static tree traversal algorithm. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01592.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01592.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DynamicTraversal Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Mixin base class for visitors that only need a dynamic TreePath during traversal. \n <a href=\"a01592.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-attribs\" name=\"pub-static-attribs\"></a>\n Static Public Attributes</h2></td></tr>\n <tr class=\"memitem:a63dbdad07a75c2f9c92a71333e14515c\" id=\"r_a63dbdad07a75c2f9c92a71333e14515c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ce\">TreePathType::Type</a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01592.html#a63dbdad07a75c2f9c92a71333e14515c\">treePathType</a> = <a class=\"el\" href=\"a00105.html#a2c22745f087ef4029052be4816e093ceaa2ea1e08f9676588a2f746d67d425e86\">TreePathType::dynamic</a></td></tr>\n <tr class=\"memdesc:a63dbdad07a75c2f9c92a71333e14515c\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Use the dynamic tree traversal algorithm. <br /></td></tr>\n <tr class=\"separator:a63dbdad07a75c2f9c92a71333e14515c\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n@@ -117,15 +117,15 @@\n </div><div class=\"memdoc\">\n \n <p>Use the dynamic tree traversal algorithm. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01596.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01596.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreeVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Convenience base class for visiting the entire tree. \n <a href=\"a01596.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreeVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01595.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Convenience base class for visiting the entire tree.\" alt=\"\" coords=\"119,79,303,104\"/>\n <area shape=\"rect\" href=\"a01560.html\" title=\"Visitor interface and base class for TypeTree visitors.\" alt=\"\" coords=\"5,5,207,31\"/>\n@@ -442,15 +442,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01600.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01600.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DirectChildrenVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Convenience base class for visiting the direct children of a node. \n <a href=\"a01600.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::DirectChildrenVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01599.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_direct_children_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_direct_children_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_direct_children_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Convenience base class for visiting the direct children of a node.\" alt=\"\" coords=\"111,93,317,133\"/>\n <area shape=\"rect\" href=\"a01560.html\" title=\"Visitor interface and base class for TypeTree visitors.\" alt=\"\" coords=\"5,13,207,38\"/>\n@@ -442,15 +442,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01604.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01604.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::TreePairVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Convenience base class for visiting an entire tree pair. \n <a href=\"a01604.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::TreePairVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01603.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_tree_pair_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_tree_pair_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_tree_pair_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Convenience base class for visiting an entire tree pair.\" alt=\"\" coords=\"115,93,285,133\"/>\n <area shape=\"rect\" href=\"a01564.html\" title=\"Visitor interface and base class for visitors of pairs of TypeTrees.\" alt=\"\" coords=\"5,5,192,45\"/>\n@@ -499,15 +499,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01608.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01608.html", "unified_diff": "@@ -79,15 +79,15 @@\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::DirectChildrenPairVisitor Struct Reference<div class=\"ingroups\"><a class=\"el\" href=\"a00089.html\">dune-typetree</a> » <a class=\"el\" href=\"a00090.html\">Traversal</a></div></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Convenience base class for visiting the direct children of a node pair. \n <a href=\"a01608.html#details\">More...</a></p>\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::DirectChildrenPairVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01607.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_direct_children_pair_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_direct_children_pair_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_direct_children_pair_visitor_inherit__map\">\n <area shape=\"rect\" title=\"Convenience base class for visiting the direct children of a node pair.\" alt=\"\" coords=\"100,93,305,133\"/>\n <area shape=\"rect\" href=\"a01564.html\" title=\"Visitor interface and base class for visitors of pairs of TypeTrees.\" alt=\"\" coords=\"5,5,192,45\"/>\n@@ -499,15 +499,15 @@\n </table>\n </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01612.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01612.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01609.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Experimental::Info::LeafCounterVisitor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::Experimental::Info::LeafCounterVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01611.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_leaf_counter_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_leaf_counter_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_leaf_counter_visitor_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"263,63,461,103\"/>\n <area shape=\"rect\" href=\"a01616.html\" title=\" \" alt=\"\" coords=\"509,63,708,103\"/>\n@@ -686,15 +686,15 @@\n </div><div class=\"memdoc\">\n \n <p>Use the static tree traversal algorithm. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01616.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01616.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01613.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Experimental::Info::NodeCounterVisitor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::Experimental::Info::NodeCounterVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01615.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_node_counter_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_node_counter_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_node_counter_visitor_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"509,63,708,103\"/>\n <area shape=\"rect\" href=\"a01612.html\" title=\" \" alt=\"\" coords=\"263,63,461,103\"/>\n@@ -733,15 +733,15 @@\n </div><div class=\"memdoc\">\n \n <p>Use the static tree traversal algorithm. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/a01620.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/a01620.html", "unified_diff": "@@ -77,15 +77,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> |\n <a href=\"#pub-static-attribs\">Static Public Attributes</a> |\n <a href=\"a01617.html\">List of all members</a> </div>\n <div class=\"headertitle\"><div class=\"title\">Dune::TypeTree::Experimental::Info::DepthVisitor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include <<a class=\"el\" href=\"a00011_source.html\">dune/typetree/visitor.hh</a>></code></p>\n+<p><code>#include <<a class=\"el\" href=\"a00074_source.html\">dune/typetree/visitor.hh</a>></code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Dune::TypeTree::Experimental::Info::DepthVisitor:</div>\n <div class=\"dyncontent\">\n <div class=\"center\"><img src=\"a01619.png\" border=\"0\" usemap=\"#a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_depth_visitor_inherit__map\" alt=\"Inheritance graph\"/></div>\n <map name=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_depth_visitor_inherit__map\" id=\"a_dune_1_1_type_tree_1_1_experimental_1_1_info_1_1_depth_visitor_inherit__map\">\n <area shape=\"rect\" title=\" \" alt=\"\" coords=\"263,63,461,103\"/>\n <area shape=\"rect\" href=\"a01568.html\" title=\"Hybrid visitor interface and base class for TypeTree hybrid visitors.\" alt=\"\" coords=\"11,5,209,45\"/>\n@@ -566,15 +566,15 @@\n </div><div class=\"memdoc\">\n \n <p>Use the static tree traversal algorithm. </p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li><a class=\"el\" href=\"a00011_source.html\">visitor.hh</a></li>\n+<li><a class=\"el\" href=\"a00074_source.html\">visitor.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/dir_5e74c06688912037f4b476b8dc05fab9.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/dir_5e74c06688912037f4b476b8dc05fab9.html", "unified_diff": "@@ -84,68 +84,68 @@\n <area shape=\"rect\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\" title=\"typetree\" alt=\"\" coords=\"27,52,96,77\"/>\n <area shape=\"rect\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\" title=\"dune\" alt=\"\" coords=\"16,16,107,88\"/>\n </map>\n </div>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00032_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00032.html\">accumulate_static.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00023_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00023.html\">accumulate_static.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00053_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00053.html\">childextraction.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00008_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00008.html\">childextraction.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00026_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00026.html\">compositenode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00044_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00044.html\">compositenode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00077_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00077.html\">dynamicpowernode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00026_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00026.html\">dynamicpowernode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00086_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00086.html\">exceptions.hh</a></td></tr>\n-<tr class=\"memdesc:a00086\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">TypeTree-specific exceptions. <br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00041_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00041.html\">exceptions.hh</a></td></tr>\n+<tr class=\"memdesc:a00041\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">TypeTree-specific exceptions. <br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00071_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00071.html\">filteredcompositenode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00083_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00083.html\">filteredcompositenode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00074_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00074.html\">filters.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00047_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00047.html\">filters.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00023_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00023.html\">fixedcapacitystack.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00029_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00029.html\">fixedcapacitystack.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00062_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00062.html\">generictransformationdescriptors.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00068_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00068.html\">generictransformationdescriptors.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00068_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00068.html\">leafnode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00071_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00071.html\">leafnode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00029_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00029.html\">nodeinterface.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00053_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00053.html\">nodeinterface.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00056_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00056.html\">nodetags.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00050_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00050.html\">nodetags.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00065_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00065.html\">pairtraversal.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00038_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00038.html\">pairtraversal.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00017_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00017.html\">powercompositenodetransformationtemplates.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00086_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00086.html\">powercompositenodetransformationtemplates.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00038_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00038.html\">powernode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00011_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00011.html\">powernode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00008_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00008.html\">proxynode.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00080_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00080.html\">proxynode.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00035_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00035.html\">simpletransformationdescriptors.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00065_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00065.html\">simpletransformationdescriptors.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00020_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00020.html\">transformation.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00077_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00077.html\">transformation.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00050_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00050.html\">transformationutilities.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00020_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00020.html\">transformationutilities.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00080_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00080.html\">traversal.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00059_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00059.html\">traversal.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00083_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00083.html\">traversalutilities.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00056_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00056.html\">traversalutilities.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00014_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00014.html\">treecontainer.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00017_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00017.html\">treecontainer.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00041_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00041.html\">treepath.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00062_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00062.html\">treepath.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00044_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00044.html\">typetraits.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00014_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00014.html\">typetraits.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00059_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00059.html\">typetree.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00032_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00032.html\">typetree.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00047_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00047.html\">utility.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00035_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00035.html\">utility.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00011_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00011.html\">visitor.hh</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00074_source.html\"><span class=\"icondoc\"></span></a> </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00074.html\">visitor.hh</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n </table>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/dune-typetree.tag.gz", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/dune-typetree.tag.gz", "unified_diff": null, "details": [{"source1": "dune-typetree.tag", "source2": "dune-typetree.tag", "unified_diff": null, "details": [{"source1": "dune-typetree.tag", "source2": "dune-typetree.tag", "unified_diff": "@@ -9,19 +9,19 @@\n <name>modules.txt</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/doc/doxygen/</path>\n <filename>a00005.html</filename>\n </compound>\n <compound kind=\"file\">\n <name>accumulate_static.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00032.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <filename>a00023.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::or_</class>\n <class kind=\"struct\">Dune::TypeTree::or_::reduce</class>\n <class kind=\"struct\">Dune::TypeTree::and_</class>\n <class kind=\"struct\">Dune::TypeTree::and_::reduce</class>\n <class kind=\"struct\">Dune::TypeTree::plus</class>\n <class kind=\"struct\">Dune::TypeTree::plus::reduce</class>\n <class kind=\"struct\">Dune::TypeTree::minus</class>\n@@ -37,81 +37,81 @@\n <class kind=\"struct\">Dune::TypeTree::AccumulateType</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::Experimental</namespace>\n <member kind=\"variable\" static=\"yes\">\n <type>static const result_type</type>\n <name>result</name>\n- <anchorfile>a00032.html</anchorfile>\n+ <anchorfile>a00023.html</anchorfile>\n <anchor>acd23380b12c1509b3b3f31b893af75c8</anchor>\n <arglist/>\n </member>\n <member kind=\"variable\" static=\"yes\">\n <type>static const result_type</type>\n <name>child_result</name>\n- <anchorfile>a00032.html</anchorfile>\n+ <anchorfile>a00023.html</anchorfile>\n <anchor>a5c902ae13e1b03f88e252f9fd9f85952</anchor>\n <arglist/>\n </member>\n </compound>\n <compound kind=\"file\">\n <name>childextraction.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00053.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <filename>a00008.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>compositenode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00026.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00053\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n- <includes id=\"a00044\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n+ <filename>a00044.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00008\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n+ <includes id=\"a00014\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n <class kind=\"class\">Dune::TypeTree::CompositeNode</class>\n <class kind=\"struct\">Dune::TypeTree::CompositeNode::Child</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>dynamicpowernode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00077.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n- <includes id=\"a00044\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n+ <filename>a00026.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <includes id=\"a00014\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n <class kind=\"class\">Dune::TypeTree::DynamicPowerNode</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>exceptions.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00086.html</filename>\n+ <filename>a00041.html</filename>\n <class kind=\"class\">Dune::TypeTree::Exception</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>filteredcompositenode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00071.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00074\" name=\"filters.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/filters.hh</includes>\n+ <filename>a00083.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00047\" name=\"filters.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/filters.hh</includes>\n <class kind=\"class\">Dune::TypeTree::FilteredCompositeNode</class>\n <class kind=\"struct\">Dune::TypeTree::FilteredCompositeNode::Child</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>filters.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00074.html</filename>\n+ <filename>a00047.html</filename>\n <class kind=\"struct\">Dune::TypeTree::FilterEntry</class>\n <class kind=\"struct\">Dune::TypeTree::FilterResult</class>\n <class kind=\"struct\">Dune::TypeTree::FilterResult::apply</class>\n <class kind=\"struct\">Dune::TypeTree::SimpleFilterTag</class>\n <class kind=\"struct\">Dune::TypeTree::AdvancedFilterTag</class>\n <class kind=\"struct\">Dune::TypeTree::AdvancedFilter</class>\n <class kind=\"struct\">Dune::TypeTree::AdvancedFilter::apply</class>\n@@ -123,27 +123,27 @@\n <class kind=\"struct\">Dune::TypeTree::filter::apply</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>fixedcapacitystack.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00023.html</filename>\n+ <filename>a00029.html</filename>\n <class kind=\"class\">Dune::TypeTree::FixedCapacityStackView</class>\n <class kind=\"class\">Dune::TypeTree::FixedCapacityStack</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>generictransformationdescriptors.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00062.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00017\" name=\"powercompositenodetransformationtemplates.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/powercompositenodetransformationtemplates.hh</includes>\n+ <filename>a00068.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00086\" name=\"powercompositenodetransformationtemplates.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/powercompositenodetransformationtemplates.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::GenericLeafNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::TemplatizedGenericPowerNodeTransformation::result</class>\n <class kind=\"struct\">Dune::TypeTree::GenericPowerNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::TemplatizedGenericDynamicPowerNodeTransformation::result</class>\n <class kind=\"struct\">Dune::TypeTree::GenericDynamicPowerNodeTransformation</class>\n@@ -152,197 +152,197 @@\n <class kind=\"struct\">Dune::TypeTree::GenericCompositeNodeTransformation</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>leafnode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00068.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <filename>a00071.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n <class kind=\"class\">Dune::TypeTree::LeafNode</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>nodeinterface.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00029.html</filename>\n+ <filename>a00053.html</filename>\n <class kind=\"struct\">Dune::TypeTree::NodeInterface</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>nodetags.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00056.html</filename>\n+ <filename>a00050.html</filename>\n <class kind=\"struct\">Dune::TypeTree::LeafNodeTag</class>\n <class kind=\"struct\">Dune::TypeTree::PowerNodeTag</class>\n <class kind=\"struct\">Dune::TypeTree::DynamicPowerNodeTag</class>\n <class kind=\"struct\">Dune::TypeTree::CompositeNodeTag</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>pairtraversal.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00065.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n- <includes id=\"a00011\" name=\"visitor.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/visitor.hh</includes>\n- <includes id=\"a00080\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n+ <filename>a00038.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <includes id=\"a00074\" name=\"visitor.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/visitor.hh</includes>\n+ <includes id=\"a00059\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::Detail</namespace>\n </compound>\n <compound kind=\"file\">\n <name>powercompositenodetransformationtemplates.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00017.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <filename>a00086.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::GenericPowerNodeTransformationTemplate</class>\n <class kind=\"struct\">Dune::TypeTree::GenericPowerNodeTransformationTemplate::result</class>\n <class kind=\"struct\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate</class>\n <class kind=\"struct\">Dune::TypeTree::GenericDynamicPowerNodeTransformationTemplate::result</class>\n <class kind=\"struct\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate</class>\n <class kind=\"struct\">Dune::TypeTree::GenericCompositeNodeTransformationTemplate::result</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>powernode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00038.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n- <includes id=\"a00053\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n- <includes id=\"a00044\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n+ <filename>a00011.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <includes id=\"a00008\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n+ <includes id=\"a00014\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n <class kind=\"class\">Dune::TypeTree::PowerNode</class>\n <class kind=\"struct\">Dune::TypeTree::PowerNode::Child</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>proxynode.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00008.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <filename>a00080.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n <class kind=\"class\">Dune::TypeTree::StaticChildAccessors</class>\n <class kind=\"struct\">Dune::TypeTree::StaticChildAccessors::Child</class>\n <class kind=\"class\">Dune::TypeTree::DynamicChildAccessors</class>\n <class kind=\"struct\">Dune::TypeTree::ProxyNodeBase< Node, LeafNodeTag ></class>\n <class kind=\"struct\">Dune::TypeTree::ProxyNodeBase< Node, CompositeNodeTag ></class>\n <class kind=\"struct\">Dune::TypeTree::ProxyNodeBase< Node, PowerNodeTag ></class>\n <class kind=\"struct\">Dune::TypeTree::ProxyNodeBase< Node, DynamicPowerNodeTag ></class>\n <class kind=\"class\">Dune::TypeTree::ProxyNode</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>simpletransformationdescriptors.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00035.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <filename>a00065.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::SimpleLeafNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::SimplePowerNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::SimplePowerNodeTransformation::result</class>\n <class kind=\"struct\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::SimpleDynamicPowerNodeTransformation::result</class>\n <class kind=\"struct\">Dune::TypeTree::SimpleCompositeNodeTransformation</class>\n <class kind=\"struct\">Dune::TypeTree::SimpleCompositeNodeTransformation::result</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>transformation.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00020.html</filename>\n- <includes id=\"a00044\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <filename>a00077.html</filename>\n+ <includes id=\"a00014\" name=\"typetraits.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/typetraits.hh</includes>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::TransformTree</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>transformationutilities.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00050.html</filename>\n- <includes id=\"a00035\" name=\"simpletransformationdescriptors.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/simpletransformationdescriptors.hh</includes>\n- <includes id=\"a00062\" name=\"generictransformationdescriptors.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/generictransformationdescriptors.hh</includes>\n+ <filename>a00020.html</filename>\n+ <includes id=\"a00065\" name=\"simpletransformationdescriptors.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/simpletransformationdescriptors.hh</includes>\n+ <includes id=\"a00068\" name=\"generictransformationdescriptors.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/generictransformationdescriptors.hh</includes>\n </compound>\n <compound kind=\"file\">\n <name>traversal.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00080.html</filename>\n- <includes id=\"a00053\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n- <includes id=\"a00011\" name=\"visitor.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/visitor.hh</includes>\n+ <filename>a00059.html</filename>\n+ <includes id=\"a00008\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <includes id=\"a00074\" name=\"visitor.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/visitor.hh</includes>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::Detail</namespace>\n </compound>\n <compound kind=\"file\">\n <name>traversalutilities.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00083.html</filename>\n- <includes id=\"a00080\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n+ <filename>a00056.html</filename>\n+ <includes id=\"a00059\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <member kind=\"variable\" static=\"yes\">\n <type>static const TreePathType::Type</type>\n <name>treePathType</name>\n- <anchorfile>a00083.html</anchorfile>\n+ <anchorfile>a00056.html</anchorfile>\n <anchor>ac933f134e17da9e8dbf18be15134df40</anchor>\n <arglist/>\n </member>\n <member kind=\"variable\">\n <type>F</type>\n <name>_functor</name>\n- <anchorfile>a00083.html</anchorfile>\n+ <anchorfile>a00056.html</anchorfile>\n <anchor>a925ce4fb47f35dbaf1550d896578184f</anchor>\n <arglist/>\n </member>\n <member kind=\"variable\">\n <type>R</type>\n <name>_reduction</name>\n- <anchorfile>a00083.html</anchorfile>\n+ <anchorfile>a00056.html</anchorfile>\n <anchor>a3399305aa17d4bcec74944e962ff3a12</anchor>\n <arglist/>\n </member>\n <member kind=\"variable\">\n <type>ResultType</type>\n <name>_value</name>\n- <anchorfile>a00083.html</anchorfile>\n+ <anchorfile>a00056.html</anchorfile>\n <anchor>ad4dc401736cbecb52f1afd1c8c8d359f</anchor>\n <arglist/>\n </member>\n </compound>\n <compound kind=\"file\">\n <name>treecontainer.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00014.html</filename>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <filename>a00017.html</filename>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n <class kind=\"class\">Dune::TypeTree::Detail::ContainerFactory</class>\n <class kind=\"class\">Dune::TypeTree::Detail::TreeContainerVectorBackend</class>\n <class kind=\"struct\">Dune::TypeTree::Detail::LeafToDefaultConstructibleValue</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::Detail</namespace>\n </compound>\n <compound kind=\"file\">\n <name>treepath.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00041.html</filename>\n- <includes id=\"a00023\" name=\"fixedcapacitystack.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/fixedcapacitystack.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <filename>a00062.html</filename>\n+ <includes id=\"a00029\" name=\"fixedcapacitystack.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/fixedcapacitystack.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n <class kind=\"class\">Dune::TypeTree::HybridTreePath</class>\n <class kind=\"struct\">Dune::TypeTree::TreePathSize< HybridTreePath< index_constant< i >... > ></class>\n <class kind=\"struct\">Dune::TypeTree::TreePathPushBack< HybridTreePath< index_constant< i >... >, k ></class>\n <class kind=\"struct\">Dune::TypeTree::TreePathPushFront< HybridTreePath< index_constant< i >... >, k ></class>\n <class kind=\"struct\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< k > > ></class>\n <class kind=\"struct\">Dune::TypeTree::TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > ></class>\n <class kind=\"struct\">Dune::TypeTree::TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > ></class>\n@@ -354,17 +354,17 @@\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::TreePathType</namespace>\n <namespace>Dune::TypeTree::Literals</namespace>\n </compound>\n <compound kind=\"file\">\n <name>typetraits.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00044.html</filename>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <filename>a00014.html</filename>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n <class kind=\"struct\">Dune::first_type< T0, T... ></class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag</class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag::yes</class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag::no</class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag_value</class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag_value::maybe</class>\n <class kind=\"struct\">Dune::TypeTree::has_node_tag_value::yes</class>\n@@ -385,44 +385,44 @@\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n <namespace>Dune::TypeTree::impl</namespace>\n </compound>\n <compound kind=\"file\">\n <name>typetree.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00059.html</filename>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n- <includes id=\"a00047\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n- <includes id=\"a00068\" name=\"leafnode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/leafnode.hh</includes>\n- <includes id=\"a00038\" name=\"powernode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/powernode.hh</includes>\n- <includes id=\"a00077\" name=\"dynamicpowernode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/dynamicpowernode.hh</includes>\n- <includes id=\"a00026\" name=\"compositenode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/compositenode.hh</includes>\n- <includes id=\"a00080\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n- <includes id=\"a00065\" name=\"pairtraversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/pairtraversal.hh</includes>\n- <includes id=\"a00083\" name=\"traversalutilities.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversalutilities.hh</includes>\n- <includes id=\"a00020\" name=\"transformation.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/transformation.hh</includes>\n- <includes id=\"a00050\" name=\"transformationutilities.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/transformationutilities.hh</includes>\n- <includes id=\"a00032\" name=\"accumulate_static.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/accumulate_static.hh</includes>\n- <includes id=\"a00053\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n+ <filename>a00032.html</filename>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <includes id=\"a00035\" name=\"utility.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/utility.hh</includes>\n+ <includes id=\"a00071\" name=\"leafnode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/leafnode.hh</includes>\n+ <includes id=\"a00011\" name=\"powernode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/powernode.hh</includes>\n+ <includes id=\"a00026\" name=\"dynamicpowernode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/dynamicpowernode.hh</includes>\n+ <includes id=\"a00044\" name=\"compositenode.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/compositenode.hh</includes>\n+ <includes id=\"a00059\" name=\"traversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversal.hh</includes>\n+ <includes id=\"a00038\" name=\"pairtraversal.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/pairtraversal.hh</includes>\n+ <includes id=\"a00056\" name=\"traversalutilities.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/traversalutilities.hh</includes>\n+ <includes id=\"a00077\" name=\"transformation.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/transformation.hh</includes>\n+ <includes id=\"a00020\" name=\"transformationutilities.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/transformationutilities.hh</includes>\n+ <includes id=\"a00023\" name=\"accumulate_static.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/accumulate_static.hh</includes>\n+ <includes id=\"a00008\" name=\"childextraction.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/childextraction.hh</includes>\n </compound>\n <compound kind=\"file\">\n <name>utility.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00047.html</filename>\n- <includes id=\"a00029\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n- <includes id=\"a00056\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n+ <filename>a00035.html</filename>\n+ <includes id=\"a00053\" name=\"nodeinterface.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodeinterface.hh</includes>\n+ <includes id=\"a00050\" name=\"nodetags.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/nodetags.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::TreeInfo</class>\n <namespace>Dune</namespace>\n <namespace>Dune::TypeTree</namespace>\n </compound>\n <compound kind=\"file\">\n <name>visitor.hh</name>\n <path>/build/reproducible-path/dune-typetree-2.10.0/dune/typetree/</path>\n- <filename>a00011.html</filename>\n- <includes id=\"a00041\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n+ <filename>a00074.html</filename>\n+ <includes id=\"a00062\" name=\"treepath.hh\" local=\"no\" import=\"no\" module=\"no\" objc=\"no\">dune/typetree/treepath.hh</includes>\n <class kind=\"struct\">Dune::TypeTree::DefaultVisitor</class>\n <class kind=\"struct\">Dune::TypeTree::DefaultPairVisitor</class>\n <class kind=\"struct\">Dune::TypeTree::Experimental::DefaultHybridVisitor</class>\n <class kind=\"struct\">Dune::TypeTree::VisitDirectChildren</class>\n <class kind=\"struct\">Dune::TypeTree::VisitDirectChildren::VisitChild</class>\n <class kind=\"struct\">Dune::TypeTree::VisitTree</class>\n <class kind=\"struct\">Dune::TypeTree::VisitTree::VisitChild</class>\n"}]}]}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/files.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/files.html", "unified_diff": "@@ -74,41 +74,41 @@\n <div class=\"contents\">\n <div class=\"textblock\">Here is a list of all files with brief descriptions:</div><div class=\"directory\">\n <div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span>]</div><table class=\"directory\">\n <tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\"> </span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">▼</span><span id=\"img_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_')\"> </span><a class=\"el\" href=\"dir_e68e8157741866f444e17edd764ebbae.html\" target=\"_self\">doc</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\"> </span><span class=\"iconfclosed\"></span><a class=\"el\" href=\"dir_04f2ecc425faf0d475a3caf484e551f3.html\" target=\"_self\">doxygen</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\"> </span><span id=\"arr_1_\" class=\"arrow\" onclick=\"toggleFolder('1_')\">▼</span><span id=\"img_1_\" class=\"iconfopen\" onclick=\"toggleFolder('1_')\"> </span><a class=\"el\" href=\"dir_5e69be5995c9f5d42bf491ae6f29600e.html\" target=\"_self\">dune</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_1_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\"> </span><span id=\"arr_1_0_\" class=\"arrow\" onclick=\"toggleFolder('1_0_')\">▼</span><span id=\"img_1_0_\" class=\"iconfopen\" onclick=\"toggleFolder('1_0_')\"> </span><a class=\"el\" href=\"dir_5e74c06688912037f4b476b8dc05fab9.html\" target=\"_self\">typetree</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00032_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00032.html\" target=\"_self\">accumulate_static.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00053_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00053.html\" target=\"_self\">childextraction.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00026_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00026.html\" target=\"_self\">compositenode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00077_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00077.html\" target=\"_self\">dynamicpowernode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00086_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00086.html\" target=\"_self\">exceptions.hh</a></td><td class=\"desc\">TypeTree-specific exceptions </td></tr>\n-<tr id=\"row_1_0_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00071_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00071.html\" target=\"_self\">filteredcompositenode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00074_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00074.html\" target=\"_self\">filters.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00023_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00023.html\" target=\"_self\">fixedcapacitystack.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00062_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00062.html\" target=\"_self\">generictransformationdescriptors.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00068_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00068.html\" target=\"_self\">leafnode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00029_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00029.html\" target=\"_self\">nodeinterface.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00056_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00056.html\" target=\"_self\">nodetags.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00065_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00065.html\" target=\"_self\">pairtraversal.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00017_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00017.html\" target=\"_self\">powercompositenodetransformationtemplates.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00038_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00038.html\" target=\"_self\">powernode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_15_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00008_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00008.html\" target=\"_self\">proxynode.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00035_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00035.html\" target=\"_self\">simpletransformationdescriptors.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_17_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00020_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00020.html\" target=\"_self\">transformation.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00050_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00050.html\" target=\"_self\">transformationutilities.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_19_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00080_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00080.html\" target=\"_self\">traversal.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00083_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00083.html\" target=\"_self\">traversalutilities.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_21_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00014_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00014.html\" target=\"_self\">treecontainer.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00041_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00041.html\" target=\"_self\">treepath.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_23_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00044_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00044.html\" target=\"_self\">typetraits.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00059_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00059.html\" target=\"_self\">typetree.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_25_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00047_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00047.html\" target=\"_self\">utility.hh</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_1_0_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00011_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00011.html\" target=\"_self\">visitor.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00023_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00023.html\" target=\"_self\">accumulate_static.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00008_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00008.html\" target=\"_self\">childextraction.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00044_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00044.html\" target=\"_self\">compositenode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00026_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00026.html\" target=\"_self\">dynamicpowernode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00041_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00041.html\" target=\"_self\">exceptions.hh</a></td><td class=\"desc\">TypeTree-specific exceptions </td></tr>\n+<tr id=\"row_1_0_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00083_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00083.html\" target=\"_self\">filteredcompositenode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00047_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00047.html\" target=\"_self\">filters.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00029_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00029.html\" target=\"_self\">fixedcapacitystack.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00068_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00068.html\" target=\"_self\">generictransformationdescriptors.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00071_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00071.html\" target=\"_self\">leafnode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00053_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00053.html\" target=\"_self\">nodeinterface.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00050_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00050.html\" target=\"_self\">nodetags.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00038_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00038.html\" target=\"_self\">pairtraversal.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00086_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00086.html\" target=\"_self\">powercompositenodetransformationtemplates.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00011_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00011.html\" target=\"_self\">powernode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_15_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00080_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00080.html\" target=\"_self\">proxynode.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00065_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00065.html\" target=\"_self\">simpletransformationdescriptors.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_17_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00077_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00077.html\" target=\"_self\">transformation.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00020_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00020.html\" target=\"_self\">transformationutilities.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_19_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00059_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00059.html\" target=\"_self\">traversal.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00056_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00056.html\" target=\"_self\">traversalutilities.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_21_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00017_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00017.html\" target=\"_self\">treecontainer.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00062_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00062.html\" target=\"_self\">treepath.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_23_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00014_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00014.html\" target=\"_self\">typetraits.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00032_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00032.html\" target=\"_self\">typetree.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_25_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00035_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00035.html\" target=\"_self\">utility.hh</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_1_0_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\"> </span><a href=\"a00074_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00074.html\" target=\"_self\">visitor.hh</a></td><td class=\"desc\"></td></tr>\n </table>\n </div><!-- directory -->\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/globals.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/globals.html", "unified_diff": "@@ -66,20 +66,20 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"contents\">\n <div class=\"textblock\">Here is a list of all file members with links to the files they belong to:</div><ul>\n-<li>_functor : <a class=\"el\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">traversalutilities.hh</a></li>\n-<li>_reduction : <a class=\"el\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">traversalutilities.hh</a></li>\n-<li>_value : <a class=\"el\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">traversalutilities.hh</a></li>\n-<li>child_result : <a class=\"el\" href=\"a00032.html#a5c902ae13e1b03f88e252f9fd9f85952\">accumulate_static.hh</a></li>\n-<li>result : <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">accumulate_static.hh</a></li>\n-<li>treePathType : <a class=\"el\" href=\"a00083.html#ac933f134e17da9e8dbf18be15134df40\">traversalutilities.hh</a></li>\n+<li>_functor : <a class=\"el\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">traversalutilities.hh</a></li>\n+<li>_reduction : <a class=\"el\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">traversalutilities.hh</a></li>\n+<li>_value : <a class=\"el\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">traversalutilities.hh</a></li>\n+<li>child_result : <a class=\"el\" href=\"a00023.html#a5c902ae13e1b03f88e252f9fd9f85952\">accumulate_static.hh</a></li>\n+<li>result : <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">accumulate_static.hh</a></li>\n+<li>treePathType : <a class=\"el\" href=\"a00056.html#ac933f134e17da9e8dbf18be15134df40\">traversalutilities.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}, {"source1": "./usr/share/doc/libdune-typetree-doc/doxygen/globals_vars.html", "source2": "./usr/share/doc/libdune-typetree-doc/doxygen/globals_vars.html", "unified_diff": "@@ -66,20 +66,20 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"contents\">\n <div class=\"textblock\">Here is a list of all variables with links to the files they belong to:</div><ul>\n-<li>_functor : <a class=\"el\" href=\"a00083.html#a925ce4fb47f35dbaf1550d896578184f\">traversalutilities.hh</a></li>\n-<li>_reduction : <a class=\"el\" href=\"a00083.html#a3399305aa17d4bcec74944e962ff3a12\">traversalutilities.hh</a></li>\n-<li>_value : <a class=\"el\" href=\"a00083.html#ad4dc401736cbecb52f1afd1c8c8d359f\">traversalutilities.hh</a></li>\n-<li>child_result : <a class=\"el\" href=\"a00032.html#a5c902ae13e1b03f88e252f9fd9f85952\">accumulate_static.hh</a></li>\n-<li>result : <a class=\"el\" href=\"a00032.html#acd23380b12c1509b3b3f31b893af75c8\">accumulate_static.hh</a></li>\n-<li>treePathType : <a class=\"el\" href=\"a00083.html#ac933f134e17da9e8dbf18be15134df40\">traversalutilities.hh</a></li>\n+<li>_functor : <a class=\"el\" href=\"a00056.html#a925ce4fb47f35dbaf1550d896578184f\">traversalutilities.hh</a></li>\n+<li>_reduction : <a class=\"el\" href=\"a00056.html#a3399305aa17d4bcec74944e962ff3a12\">traversalutilities.hh</a></li>\n+<li>_value : <a class=\"el\" href=\"a00056.html#ad4dc401736cbecb52f1afd1c8c8d359f\">traversalutilities.hh</a></li>\n+<li>child_result : <a class=\"el\" href=\"a00023.html#a5c902ae13e1b03f88e252f9fd9f85952\">accumulate_static.hh</a></li>\n+<li>result : <a class=\"el\" href=\"a00023.html#acd23380b12c1509b3b3f31b893af75c8\">accumulate_static.hh</a></li>\n+<li>treePathType : <a class=\"el\" href=\"a00056.html#ac933f134e17da9e8dbf18be15134df40\">traversalutilities.hh</a></li>\n </ul>\n </div><!-- contents -->\n <!-- start footer part -->\n <hr class=\"footer\"/><address class=\"footer\"><small>\n Generated by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8\n </small></address>\n </body>\n"}]}]}]}]}