summaryrefslogtreecommitdiffhomepage
path: root/src/emplacer.hpp
blob: 4a7f6bdb76b81312077fe455dc911b54931fc9d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
#include <type_traits>

namespace floormat {

template<typename F>
class emplacer {
    F fun;
    using type = std::decay_t<decltype(std::declval<F>()())>;

public:
    explicit constexpr emplacer(F&& fun) noexcept : fun{forward<F>(fun)} {}
    constexpr operator type() const noexcept { return fun(); }
};

} // namespace floormat