// SPDX-License-Identifier: MIT // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved. #pragma once #include "ck/utility/integral_constant.hpp" #include "ck/utility/type.hpp" namespace ck { namespace detail { template class Op, class... Args> struct detector { using value_t = ck::false_type; using type = Default; }; template class Op, class... Args> struct detector>, Op, Args...> { using value_t = ck::true_type; using type = Op; }; } // namespace detail struct nonesuch { ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; void operator=(nonesuch const&) = delete; }; template