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