uTL
micro Template library
detection.h File Reference

Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown. More...

#include <utl/core/impl.h>
#include <utl/meta/operations.h>
#include <type_traits>

Go to the source code of this file.

Classes

struct  utl::meta::nat_
 
struct  utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
 

Namespaces

 utl
 STL's core language concepts.
 
 utl::meta
 
 utl::meta::detail
 

Typedefs

template<typename... >
using utl::meta::void_ = void
 void_ type alias More...
 
template<typename... >
using utl::meta::void_t = void
 void_t type alias More...
 
template<typename Default , template< typename... > class Op, typename... Args>
using utl::meta::detail::detected_or = detector< Default, void, Op, Args... >
 helper for detected_or_t More...
 
template<template< typename... > class Op, typename... Args>
using utl::meta::is_detected = typename detail::detector< nat_, void, Op, Args... >::detected
 
template<template< typename... > class Op, typename... Args>
using utl::meta::detected_t = eval< detail::detector< nat_, void, Op, Args... > >
 
template<typename Default , template< typename... > class Op, typename... Args>
using utl::meta::detected_or_t = eval< detail::detected_or< Default, Op, Args... > >
 
template<typename Expected , template< typename... > class Op, typename... Args>
using utl::meta::is_detected_exact = eval< same_< Expected, detected_t< Op, Args... > > >
 
template<typename To , template< typename... > class Op, typename... Args>
using utl::meta::is_detected_convertible = eval< std::is_convertible< detected_t< Op, Args... >, To > >
 
template<template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_v = is_detected<Op, Args...>::value
 Detection predicate. More...
 
template<typename Expected , template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value
 evaluates to true if evaluation of Op<Args...> is Expected and to false if not More...
 
template<typename To , template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_convertible_v
 

Detailed Description

Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown.

[1]: www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf

Copyright (C) 2018-2019 Christos Choutouridis

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file detection.h.