Reference documentation for deal.II version GIT relicensing-437-g81ec864850 2024-04-19 07:30:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Classes | Typedefs
internal::SupportsOperation Namespace Reference

Classes

struct  detector
 
struct  detector< Default, void_t< Op< Args... > >, Op, Args... >
 
struct  nonesuch
 
struct  nonesuch_base
 

Typedefs

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

Detailed Description

A namespace used to declare the machinery for detecting whether a specific class supports an operation. This approach simulates C++20-style concepts with language standards before C++20.

Typedef Documentation

◆ void_t

template<class... >
using internal::SupportsOperation::void_t = typedef void

Definition at line 43 of file template_constraints.h.

◆ detected_or

template<class Default , template< class... > class Op, class... Args>
using internal::SupportsOperation::detected_or = typedef detector<Default, void, Op, Args...>

Definition at line 102 of file template_constraints.h.

◆ is_detected

template<template< class... > class Op, class... Args>
using internal::SupportsOperation::is_detected = typedef typename detected_or<nonesuch, Op, Args...>::value_t

Definition at line 105 of file template_constraints.h.

◆ detected_t

template<template< class... > class Op, class... Args>
using internal::SupportsOperation::detected_t = typedef typename detected_or<nonesuch, Op, Args...>::type

Definition at line 108 of file template_constraints.h.

◆ detected_or_t

template<class Default , template< class... > class Op, class... Args>
using internal::SupportsOperation::detected_or_t = typedef typename detected_or<Default, Op, Args...>::type

Definition at line 111 of file template_constraints.h.

◆ is_detected_exact

template<class Expected , template< class... > class Op, class... Args>
using internal::SupportsOperation::is_detected_exact = typedef std::is_same<Expected, detected_t<Op, Args...> >

Definition at line 114 of file template_constraints.h.

◆ is_detected_convertible

template<class To , template< class... > class Op, class... Args>
using internal::SupportsOperation::is_detected_convertible = typedef std::is_convertible<detected_t<Op, Args...>, To>

Definition at line 117 of file template_constraints.h.