/*
* This file is part of the DXX-Rebirth project .
* It is copyright by its individual contributors, as recorded in the
* project's Git history. See COPYING.txt at the top level for license
* terms and a link to the Git history.
*/
#pragma once
#include
#include
namespace detail {
template
std::is_rvalue_reference is_ephemeral_range(...);
template
typename std::remove_reference::type::range_owns_iterated_storage is_ephemeral_range(std::nullptr_t);
}
template
struct any_ephemeral_range : std::false_type
{
};
template
struct any_ephemeral_range : decltype(detail::is_ephemeral_range(nullptr))
{
};
template
struct any_ephemeral_range : std::conditional::value, std::true_type, any_ephemeral_range>::type
{
};