Add LICENSE. Add take_any_args.

This commit is contained in:
Arthur Sonzogni
2019-01-06 16:14:19 +01:00
parent 805c9061e5
commit 1d29645cf5
2 changed files with 40 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
#include <type_traits>
// Turn a set of arguments into a vector.
template <class... Args>
Children unpack(Args... args) {
using T = std::common_type_t<Args...>;
std::vector<T> vec;
(vec.push_back(std::forward<Args>(args)), ...);
return vec;
}
// Make |container| able to take any number of argments.
#define TAKE_ANY_ARGS(container) \
template <class... Args> \
Element container(Args... children) { \
return container(unpack(std::forward<Args>(children)...)); \
} \