Mirror reflection library 0.5.13
Classes | Namespaces | Defines | Functions | Variables

mirror/meta_prog/is_a.hpp File Reference

Boolean meta-function checking if a MetaObject is a model of a specified concept. More...

#include <mirror/meta_prog/forward_decl.hpp>
#include <mirror/meta_prog/not.hpp>
#include <type_traits>
Include dependency graph for is_a.hpp:

Go to the source code of this file.

Classes

struct  mirror::mp::is_a< MetaObject, Concept >
 Returns a boolean constant based on whether the MetaObject is the Concept. More...
struct  mirror::mp::is_not_a< MetaObject, Concept >
 Returns a boolean constant based on whether the MetaObject isn't the Concept. More...

Namespaces

namespace  mirror
 

All Mirror's types, classes, functions, etc. are defined in this namespace.


namespace  mirror::mp
 

Contains the meta-programming utilities.


Defines

#define MIRROR_ASSERT_IS_A_META(OBJECT, EXPR, NAME)
#define MIRROR_ASSERT_RETURNS_META(OBJECT, X)   MIRROR_ASSERT_IS_A_META(OBJECT, typename X::type, X)

Functions

void * mirror::mp::aux::is_a_hlpr_fn (...)
template<typename X >
void * mirror::mp::aux::is_a_hlpr_fn2 (X *, X *)
template<typename X , typename Y >
X::type mirror::mp::aux::is_a_hlpr_fn2 (X *, Y *)
template<typename X >
auto mirror::mp::aux::is_a_hlpr_fn (X *x, typename X::type *y=nullptr)-> decltype(is_a_hlpr_fn2(x

Variables

auto mirror::mp::aux::y

Detailed Description

Boolean meta-function checking if a MetaObject is a model of a specified concept.

Copyright 2008-2011 Matus Chochlik. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Define Documentation

#define MIRROR_ASSERT_IS_A_META (   OBJECT,
  EXPR,
  NAME 
)
Value:
static_assert( \
    mirror::mp::is_a< \
        EXPR, \
        typename mirror::meta_##OBJECT##_tag \
    >::value, \
    #NAME " is not a Meta" \
    MIRROR_META_OBJECT_NICE_NAME_STR(OBJECT) \
    " expression" \
)

Copyright © 2006-2011 Matus Chochlik, University of Zilina, Zilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Fri Dec 16 2011 by Doxygen (version 1.7.3).
Important note: Although the 'boostified' version of Mirror uses the Boost C++ libraries Coding Guidelines and is implemented inside of the boost namespace, it IS NOT an officially reviewed and accepted Boost library. Mirror is being developed with the intention to be submitted for review for inclusion to the Boost C++ libraries.