libboost-hana/1.83.0

[full]

A modern C++ metaprogramming library. It provides high level algorithms to manipulate heterogeneous sequences, allows writing type-level computations with a natural syntax, provides tools to introspect user-defined types and much more

Your standard library for metaprogramming

Overview

#include <boost/hana.hpp>
#include <cassert>
#include <string>
namespace hana = boost::hana;
using namespace hana::literals;

struct Fish { std::string name; };
struct Cat  { std::string name; };
struct Dog  { std::string name; };

int main() {
  // Sequences capable of holding heterogeneous objects, and algorithms
  // to manipulate them.
  auto animals = hana::make_tuple(Fish{"Nemo"}, Cat{"Garfield"}, Dog{"Snoopy"});
  auto names = hana::transform(animals, [](auto a) {
    return a.name;
  });
  assert(hana::reverse(names) == hana::make_tuple("Snoopy", "Garfield", "Nemo"));

  // No compile-time information is lost: even if `animals` can't be a
  // constant expression because it contains strings, its length is constexpr.
  static_assert(hana::length(animals) == 3u, "");

  // Computations on types can be performed with the same syntax as that of
  // normal C++. Believe it or not, everything is done at compile-time.
  auto animal_types = hana::make_tuple(hana::type_c<Fish*>, hana::type_c<Cat&>, hana::type_c<Dog*>);
  auto animal_ptrs = hana::filter(animal_types, [](auto a) {
    return hana::traits::is_pointer(a);
  });
  static_assert(animal_ptrs == hana::make_tuple(hana::type_c<Fish*>, hana::type_c<Dog*>), "");

  // And many other goodies to make your life easier, including:
  // 1. Access to elements in a tuple with a sane syntax.
  static_assert(animal_ptrs[0_c] == hana::type_c<Fish*>, "");
  static_assert(animal_ptrs[1_c] == hana::type_c<Dog*>, "");

  // 2. Unroll loops at compile-time without hassle.
  std::string s;
  hana::int_c<10>.times([&]{ s += "x"; });
  // equivalent to s += "x"; s += "x"; ... s += "x";

  // 3. Easily check whether an expression is valid.
  //    This is usually achieved with complex SFINAE-based tricks.
  auto has_name = hana::is_valid([](auto&& x) -> decltype((void)x.name) { });
  static_assert(has_name(animals[0_c]), "");
  static_assert(!has_name(1), "");
}
... More
version 1.83.0
license BSL-1.0Boost Software License 1.0
repository https://pkg.cppget.org/1/stable
download libboost-hana-1.83.0.tar.gz
sha256 72d73da35637e0f8caf34c80ef6d3fba49b50b563b7c2dd7bed2a2938373b057
project boost
url github.com/boostorg/hana
doc-url www.boost.org/doc/libs/1_83_0/libs/hana
package-url github.com/build2-packaging/boost
package-email packaging@build2.orgMailing list
topics C++Boost

Depends (5)

libboost-config == 1.83.0
libboost-core == 1.83.0
libboost-fusion == 1.83.0
libboost-mpl == 1.83.0
libboost-tuple == 1.83.0

Reviews

fail 0
pass 1

Builds

toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_fedora_44-gcc_16-bindist
timestamp 2026-05-05 02:57:50 UTC (01 14:21:25 days ago)
result warning (update) | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
timestamp 2026-05-01 00:22:17 UTC (05 16:56:59 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
timestamp 2026-05-01 00:18:42 UTC (05 17:00:33 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
timestamp 2026-05-01 00:14:53 UTC (05 17:04:22 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18.3-static_O2
timestamp 2026-04-30 12:43:21 UTC (06 04:35:54 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18.3-O2
timestamp 2026-04-30 12:43:10 UTC (06 04:36:06 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18.3
timestamp 2026-04-30 12:42:50 UTC (06 04:36:26 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
timestamp 2026-04-30 12:39:54 UTC (06 04:39:21 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19-static_O3
timestamp 2026-04-30 12:39:07 UTC (06 04:40:09 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19-O3
timestamp 2026-04-30 12:38:59 UTC (06 04:40:16 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.14
timestamp 2026-04-30 12:38:52 UTC (06 04:40:23 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19
timestamp 2026-04-30 12:38:39 UTC (06 04:40:37 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
timestamp 2026-04-30 12:38:00 UTC (06 04:41:16 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2026-04-30 11:20:33 UTC (06 05:58:42 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2026-04-30 11:20:00 UTC (06 05:59:15 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2026-04-30 11:19:58 UTC (06 05:59:18 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2026-04-30 11:19:28 UTC (06 05:59:48 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2026-04-30 11:19:26 UTC (06 05:59:50 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2026-04-30 11:18:54 UTC (06 06:00:21 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++-static_O3
timestamp 2026-04-30 10:39:00 UTC (06 06:40:15 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21_libc++-static_O3
timestamp 2026-04-30 10:38:46 UTC (06 06:40:29 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21_libc++
timestamp 2026-04-30 10:38:37 UTC (06 06:40:38 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21_libc++-O3
timestamp 2026-04-30 10:38:36 UTC (06 06:40:40 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++-O3
timestamp 2026-04-30 10:38:29 UTC (06 06:40:46 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++
timestamp 2026-04-30 10:38:28 UTC (06 06:40:48 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22-static_O3
timestamp 2026-04-30 10:38:17 UTC (06 06:40:59 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21-static_O3
timestamp 2026-04-30 10:38:12 UTC (06 06:41:03 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21-O3
timestamp 2026-04-30 10:38:03 UTC (06 06:41:13 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21
timestamp 2026-04-30 10:37:54 UTC (06 06:41:22 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22-O3
timestamp 2026-04-30 10:37:46 UTC (06 06:41:29 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22
timestamp 2026-04-30 10:37:44 UTC (06 06:41:31 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_14.2_mingw_w64-static_O2
timestamp 2026-04-30 10:32:12 UTC (06 06:47:03 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_fedora_43-gcc_15-bindist
timestamp 2026-04-30 10:32:11 UTC (06 06:47:04 days ago)
result warning (update) | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18.3-static_O2
timestamp 2026-04-30 10:32:08 UTC (06 06:47:08 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_14.2_mingw_w64-O2
timestamp 2026-04-30 10:31:59 UTC (06 06:47:17 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18.3-O2
timestamp 2026-04-30 10:31:47 UTC (06 06:47:29 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-ndebug_O3
timestamp 2026-04-30 10:31:44 UTC (06 06:47:31 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-static_O3
timestamp 2026-04-30 10:31:44 UTC (06 06:47:31 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_14.2_mingw_w64
timestamp 2026-04-30 10:31:42 UTC (06 06:47:33 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15-static_O3
timestamp 2026-04-30 10:31:30 UTC (06 06:47:46 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18.3
timestamp 2026-04-30 10:31:28 UTC (06 06:47:47 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-O3
timestamp 2026-04-30 10:31:17 UTC (06 06:47:59 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15-ndebug_O3
timestamp 2026-04-30 10:31:16 UTC (06 06:48:00 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
timestamp 2026-04-30 10:31:13 UTC (06 06:48:02 days ago)
result warning (update) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_14-bindist
timestamp 2026-04-30 10:31:06 UTC (06 06:48:10 days ago)
result warning (update) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16
timestamp 2026-04-30 10:31:02 UTC (06 06:48:13 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15-O3
timestamp 2026-04-30 10:30:52 UTC (06 06:48:23 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15
timestamp 2026-04-30 10:30:51 UTC (06 06:48:25 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_20
timestamp 2026-04-30 10:30:44 UTC (06 06:48:32 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2026-04-30 10:30:19 UTC (06 06:48:57 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-04-30 10:30:15 UTC (06 06:49:01 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2026-04-29 12:12:38 UTC (07 05:06:37 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2026-04-29 12:11:39 UTC (07 05:07:36 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2026-04-29 12:10:38 UTC (07 05:08:37 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-04-29 12:09:34 UTC (07 05:09:42 days ago)
result warning (update) | warning (test-installed) | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2026-04-29 10:30:50 UTC (07 06:48:25 days ago)
result warning (update) | warning (test-installed) | log | rebuild
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
result excluded (https://github)
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
result excluded (https://github)
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
result excluded (https://github)