tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
ranges_construct_at.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_MEMORY_RANGES_CONSTRUCT_AT_HPP
4#define TETL_MEMORY_RANGES_CONSTRUCT_AT_HPP
5
8
9namespace etl::ranges {
10
11inline constexpr struct construct_at_fn {
12 template <typename T, typename... Args>
13 requires requires(void* ptr, Args&&... args) { ::new (ptr) T(etl::forward<Args>(args)...); }
14 constexpr auto operator()(T* p, Args&&... args) const -> T*
15 {
16 return etl::construct_at(p, etl::forward<Args>(args)...);
17 }
19
20} // namespace etl::ranges
21
22#endif // TETL_MEMORY_RANGES_CONSTRUCT_AT_HPP
Definition ranges_in_fun_result.hpp:11
constexpr auto construct_at(T *p, Args &&... args) -> T *
Creates a T object initialized with arguments args... at given address p.
Definition construct_at.hpp:38
constexpr auto forward(remove_reference_t< T > &param) noexcept -> T &&
Forwards lvalues as either lvalues or as rvalues, depending on T. When t is a forwarding reference (a...
Definition forward.hpp:18
Definition ranges_construct_at.hpp:11
constexpr auto operator()(T *p, Args &&... args) const -> T *
Definition ranges_construct_at.hpp:14