#pragma once #include #include namespace floormat { template class emplacer { F fun; using type = std::decay_t()())>; public: explicit constexpr emplacer(F&& fun) noexcept : fun{Utility::forward(fun)} {} constexpr operator type() const noexcept { return fun(); } }; } // namespace floormat