based

Opinionated utility library
git clone git://git.dimitrijedobrota.com/based.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

commit 94b5faad6dfe05fd0766da1f43ce57c0e02529f8
parent 384b31564a11badfc731401661f1a3a7c6b1a76f
author Dimitrije Dobrota < mail@dimitrijedobrota.com >
date Mon, 14 Apr 2025 13:38:55 +0200

Overload lambdas

* Found bug in clang-tidy

Diffstat:
M example/CMakeLists.txt | +
A example/template.cpp | ++++++++++++++++++
A include/based/template.hpp | +++++++++++++++

3 files changed, 34 insertions(+), 0 deletions(-)


diff --git a/ example/CMakeLists.txt b/ example/CMakeLists.txt

@@ -25,5 +25,6 @@ add_example(algorithm)

add_example(list)
add_example(type_traits)
add_example(functional)
add_example(template)

add_folders(Example)

diff --git a/ example/template.cpp b/ example/template.cpp

@@ -0,0 +1,18 @@

#include <iostream>

#include "based/template.hpp"

int main()
{
const auto l =
based::overload([](const int* i) { std::cout << "i=" << *i << '\n'; },
[](const double* d) { std::cout << "d=" << *d << '\n'; });

int i = 5;
l(&i);

double d = 7.3;
l(&d);

return 0;
}

diff --git a/ include/based/template.hpp b/ include/based/template.hpp

@@ -0,0 +1,15 @@

#pragma once

namespace based
{

template<typename... F>
struct overload : public F...
{
using F::operator()...;
};

template<typename... F>
overload(F&&...) -> overload<F...>;

} // namespace based