Reference documentation for deal.II version GIT b6bf1e606d 2022-08-11 15:25: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\}}\)
Classes | Typedefs
internal::SupportsOperation Namespace Reference

Classes

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

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 41 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 100 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 103 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 106 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 109 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 112 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 115 of file template_constraints.h.