ChampSim
detect.h File Reference
#include <type_traits>
Include dependency graph for detect.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  champsim::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  champsim::detail::detector< Default, std::void_t< Op< Args... > >, Op, Args... >
 
struct  champsim::nonesuch
 

Namespaces

 champsim
 
 champsim::detail
 

Typedefs

template<template< class... > class Op, class... Args>
using champsim::is_detected = typename detail::detector< nonesuch, void, Op, Args... >::value_t
 
template<template< class... > class Op, class... Args>
using champsim::detected_t = typename detail::detector< nonesuch, void, Op, Args... >::type
 
template<class Default , template< class... > class Op, class... Args>
using champsim::detected_or = detail::detector< Default, void, Op, Args... >
 
template<class Default , template< class... > class Op, class... Args>
using champsim::detected_or_t = typename detected_or< Default, Op, Args... >::type
 
template<class Expected , template< class... > class Op, class... Args>
using champsim::is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 
template<class To , template< class... > class Op, class... Args>
using champsim::is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
 

Variables

template<template< class... > class Op, class... Args>
constexpr bool champsim::is_detected_v = is_detected<Op, Args...>::value
 
template<class Expected , template< class... > class Op, class... Args>
constexpr bool champsim::is_detected_exact_v = is_detected_exact<Expected, Op, Args...>::value
 
template<class To , template< class... > class Op, class... Args>
constexpr bool champsim::is_detected_convertible_v = is_detected_convertible<To, Op, Args...>::value