7#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_TRAITS_IS_IMPLICITLY_CONSTRUCTIBLE_HPP_
8#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_TRAITS_IS_IMPLICITLY_CONSTRUCTIBLE_HPP_
10#include "arene/base/stdlib_choice/declval.hpp"
11#include "arene/base/stdlib_choice/integral_constant.hpp"
12#include "arene/base/type_traits/priority_tag.hpp"
21namespace is_implicitly_constructible_detail {
29constexpr auto implicitly_construct(T)
noexcept -> std::true_type;
35template <
class T,
class... Args>
36constexpr auto try_to_implicitly_construct(priority_tag<1>)
noexcept(
37 noexcept(implicitly_construct<T>({std::declval<Args>()...}))
38) ->
decltype(implicitly_construct<T>({std::declval<Args>()...}));
44template <
class T,
class... Args>
45constexpr auto try_to_implicitly_construct(priority_tag<0>)
noexcept -> std::false_type;
51template <
bool IsConstructible,
class T,
class... Args>
52class is_nothrow_implicitly_constructible_impl :
public std::false_type {};
57template <
class T,
class... Args>
58class is_nothrow_implicitly_constructible_impl<
true, T, Args...> {
62 static constexpr bool value{
63 noexcept(is_implicitly_constructible_detail::try_to_implicitly_construct<T, Args...>(priority_tag<1>{}))
75template <
class T,
class...
Args>
82template <
class T,
class...
Args>
88template <
class T,
class... Args>
89using is_nothrow_implicitly_constructible = is_implicitly_constructible_detail::
90 is_nothrow_implicitly_constructible_impl<is_implicitly_constructible_v<T, Args...>, T, Args...>;
95template <
class T,
class...
Args>
Definition array_exceptions_disabled.cpp:11
constexpr bool is_nothrow_implicitly_constructible_v
Type trait to detect if a type is nothrow implicitly constructible from arguments of the specified ty...
constexpr bool is_implicitly_constructible_v
Type trait to detect if a type is implicitly constructible from arguments of the specified types.
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10