5 #ifndef VCCC_MEMORY_CONSTRUCT_AT_HPP_
6 #define VCCC_MEMORY_CONSTRUCT_AT_HPP_
17 template<
typename T,
typename ArgPack,
typename =
void>
18 struct in_place_constructible_impl : std::false_type {};
20 template<
typename T,
typename... Args>
21 struct in_place_constructible_impl<T, type_sequence<Args...>,
22 void_t<decltype(::new(std::declval<void*>()) T(std::declval<Args>()...))>> : std::true_type {};
24 template<
typename T,
typename... Args>
25 struct in_place_constructible
26 : in_place_constructible_impl<T, type_sequence<Args...>> {};
33 template<
typename T,
typename... Args, std::enable_if_t<detail::in_place_constructible<T, Args...>
::value,
int> = 0>
35 return ::new (
static_cast<void*
>(p)) T(std::forward<Args>(args)...);
constexpr T * construct_at(T *p, Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value)
Definition: construct_at.hpp:34
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35