Skip to content

Commit

Permalink
Merge pull request #2 from njoy/develop
Browse files Browse the repository at this point in the history
Adding the overload struct to tools
  • Loading branch information
whaeck authored Oct 12, 2023
2 parents a93ea30 + e26584c commit b11bac0
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/tools.hpp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
// empty include
#include "tools/overload.hpp"
32 changes: 32 additions & 0 deletions src/tools/overload.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#ifndef NJOY_TOOLS_OVERLOAD
#define NJOY_TOOLS_OVERLOAD

// system includes

// other includes

namespace njoy {
namespace tools {

/**
* @brief Overload struct for collecting lambdas for std::visit
*
* For example:
*
* auto value = std::visit(
* tools::overload{ [] ( const Foo& ) -> std::string
* { return "Foo"; },
* [] ( const Bar& )
* { return "Bar"; } },
* variant );
*/
template < class... Types > struct overload : Types... {

using Types::operator()...;
};
template < class... Types > overload( Types... ) -> overload< Types... >;

} // tools namespace
} // njoy namespace

#endif

0 comments on commit b11bac0

Please sign in to comment.