basedOpinionated 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
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