OpenKalman
Classes | Variables
interfaces-defined.hpp File Reference

Concepts for testing whether object_traits or library_interface definitions exist for a particular object. More...

#include <type_traits>
#include <utility>
#include "object_traits.hpp"
#include "library_interface.hpp"
#include "linear-algebra/enumerations.hpp"
Include dependency graph for interfaces-defined.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  OpenKalman::interface::detail::get_pattern_collection_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::get_pattern_collection_defined_for_impl< T, std::void_t< decltype(object_traits< stdex::remove_cvref_t< T >>::get_pattern_collection)> >
 
struct  OpenKalman::interface::detail::get_constant_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::get_constant_defined_for_impl< T, std::enable_if_t< values::value< typename std::invoke_result< decltype(object_traits< stdex::remove_cvref_t< T >>::get_constant), T >::type > > >
 
struct  OpenKalman::interface::detail::nested_object_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::nested_object_defined_for_impl< T, std::void_t< decltype(object_traits< stdex::remove_cvref_t< T >>::nested_object)> >
 
struct  OpenKalman::interface::detail::is_square_defined_for_impl< T, b, typename >
 
struct  OpenKalman::interface::detail::is_square_defined_for_impl< T, b, std::enable_if_t< stdex::convertible_to< decltype(object_traits< stdex::remove_cvref_t< T >>::template is_square< b >), bool > > >
 
struct  OpenKalman::interface::detail::is_triangular_adapter_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::is_triangular_adapter_defined_for_impl< T, std::enable_if_t< stdex::convertible_to< decltype(object_traits< stdex::remove_cvref_t< T >>::is_triangular_adapter), bool > > >
 
struct  OpenKalman::interface::detail::is_hermitian_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::is_hermitian_defined_for_impl< T, std::enable_if_t< std::is_convertible_v< decltype(object_traits< stdex::remove_cvref_t< T >>::is_hermitian), bool > > >
 
struct  OpenKalman::interface::is_explicitly_hermitian< T, typename >
 
struct  OpenKalman::interface::is_explicitly_hermitian< T, std::enable_if_t< object_traits< stdex::remove_cvref_t< T > >::is_hermitian > >
 
struct  OpenKalman::interface::detail::hermitian_adapter_type_defined_for_impl< T, typename >
 
struct  OpenKalman::interface::detail::hermitian_adapter_type_defined_for_impl< T, std::enable_if_t< std::is_convertible_v< decltype(object_traits< stdex::remove_cvref_t< T >>::hermitian_adapter_type), HermitianAdapterType > > >
 
struct  OpenKalman::interface::detail::LibraryBase_defined_for_impl< Derived, LibraryObject, typename >
 
struct  OpenKalman::interface::detail::LibraryBase_defined_for_impl< Derived, LibraryObject, std::void_t< typename library_interface< stdex::remove_cvref_t< LibraryObject > >::template library_base< std::decay_t< Derived > > > >
 
struct  OpenKalman::interface::detail::copy_from_defined_for_impl< LHS, RHS, typename >
 
struct  OpenKalman::interface::detail::copy_from_defined_for_impl< LHS, RHS, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< LHS >>::copy), LHS, RHS > > >
 
struct  OpenKalman::interface::detail::to_native_matrix_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::to_native_matrix_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::to_native_matrix), Arg && > > >
 
struct  OpenKalman::interface::detail::make_default_defined_for_impl< T, layout, Scalar, D, typename >
 
struct  OpenKalman::interface::detail::make_default_defined_for_impl< T, layout, Scalar, D, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template make_default< layout, Scalar >), D > > >
 
struct  OpenKalman::interface::detail::fill_components_defined_for_impl< T, layout, Arg, typename, Scalars >
 
struct  OpenKalman::interface::detail::fill_components_defined_for_impl< T, layout, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template fill_components< layout >), Arg, Scalars... > >, Scalars... >
 
struct  OpenKalman::interface::detail::make_constant_matrix_defined_for_impl< T, C, Ds, typename >
 
struct  OpenKalman::interface::detail::make_constant_matrix_defined_for_impl< T, C, Ds, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::make_constant), C, Ds > > >
 
struct  OpenKalman::interface::detail::make_identity_matrix_defined_for_impl< T, Scalar, Ds, typename >
 
struct  OpenKalman::interface::detail::make_identity_matrix_defined_for_impl< T, Scalar, Ds, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template make_identity_matrix< Scalar >), Ds > > >
 
struct  OpenKalman::interface::detail::make_triangular_matrix_defined_for_impl< T, tri, Arg, typename >
 
struct  OpenKalman::interface::detail::make_triangular_matrix_defined_for_impl< T, tri, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template make_triangular_matrix< tri >), Arg > > >
 
struct  OpenKalman::interface::detail::make_hermitian_adapter_defined_for_impl< T, adapter_type, Arg, typename >
 
struct  OpenKalman::interface::detail::make_hermitian_adapter_defined_for_impl< T, adapter_type, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template make_hermitian_adapter< adapter_type >), Arg > > >
 
struct  OpenKalman::interface::detail::to_euclidean_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::to_euclidean_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::to_euclidean), Arg > > >
 
struct  OpenKalman::interface::detail::from_euclidean_defined_for_impl< T, Arg, V, typename >
 
struct  OpenKalman::interface::detail::from_euclidean_defined_for_impl< T, Arg, V, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::from_euclidean), Arg, V > > >
 
struct  OpenKalman::interface::detail::wrap_angles_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::wrap_angles_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::wrap_angles), Arg > > >
 
struct  OpenKalman::interface::detail::get_slice_defined_for_impl< T, Arg, BeginTup, SizeTup, typename >
 
struct  OpenKalman::interface::detail::get_slice_defined_for_impl< T, Arg, BeginTup, SizeTup, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::set_slice), Arg, BeginTup, SizeTup > > >
 
struct  OpenKalman::interface::detail::set_slice_defined_for_impl< T, Arg, Block, typename, Begin >
 
struct  OpenKalman::interface::detail::set_slice_defined_for_impl< T, Arg, Block, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::set_slice), Arg, Block, Begin... > >, Begin... >
 
struct  OpenKalman::interface::detail::set_triangle_defined_for_impl< T, tri, A, B, typename >
 
struct  OpenKalman::interface::detail::set_triangle_defined_for_impl< T, tri, A, B, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template set_triangle< tri >), A, B > > >
 
struct  OpenKalman::interface::detail::to_diagonal_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::to_diagonal_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::to_diagonal), Arg > > >
 
struct  OpenKalman::interface::detail::diagonal_of_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::diagonal_of_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::diagonal_of), Arg > > >
 
struct  OpenKalman::interface::detail::conjugate_defined_for_impl< Arg, typename >
 
struct  OpenKalman::interface::detail::conjugate_defined_for_impl< Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< Arg >>::conjugate), Arg > > >
 
struct  OpenKalman::interface::detail::transpose_defined_for_impl< Arg, indexa, indexb, typename >
 
struct  OpenKalman::interface::detail::transpose_defined_for_impl< Arg, indexa, indexb, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< Arg >>::template transpose< indexa, indexb >), Arg && > > >
 
struct  OpenKalman::interface::detail::matrix_transpose_defined_for_impl< Arg, typename >
 
struct  OpenKalman::interface::detail::matrix_transpose_defined_for_impl< Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< Arg >>::transpose), Arg && > > >
 
struct  OpenKalman::interface::detail::adjoint_defined_for_impl< Arg, indexa, indexb, typename >
 
struct  OpenKalman::interface::detail::adjoint_defined_for_impl< Arg, indexa, indexb, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< Arg >>::template adjoint< indexa, indexb >), Arg && > > >
 
struct  OpenKalman::interface::detail::matrix_adjoint_defined_for_impl< Arg, typename >
 
struct  OpenKalman::interface::detail::matrix_adjoint_defined_for_impl< Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< Arg >>::adjoint), Arg && > > >
 
struct  OpenKalman::interface::detail::broadcast_defined_for_impl< T, Arg, typename, Factors >
 
struct  OpenKalman::interface::detail::broadcast_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::broadcast), Arg, Factors... > >, Factors... >
 
struct  OpenKalman::interface::detail::n_ary_operation_defined_for_impl< T, DTup, Op, typename, Args >
 
struct  OpenKalman::interface::detail::n_ary_operation_defined_for_impl< T, DTup, Op, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::n_ary_operation), DTup, Op, Args... > >, Args... >
 
struct  OpenKalman::interface::detail::reduce_defined_for_impl< T, BinaryFunction, Arg, typename, indices >
 
struct  OpenKalman::interface::detail::reduce_defined_for_impl< T, BinaryFunction, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template reduce< indices... >), BinaryFunction, Arg > >, indices... >
 
struct  OpenKalman::interface::detail::determinant_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::determinant_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::determinant), Arg > > >
 
struct  OpenKalman::interface::detail::sum_defined_for_impl< T, typename, Args >
 
struct  OpenKalman::interface::detail::sum_defined_for_impl< T, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::sum), Args... > >, Args... >
 
struct  OpenKalman::interface::detail::scalar_product_defined_for_impl< T, Arg, S, typename >
 
struct  OpenKalman::interface::detail::scalar_product_defined_for_impl< T, Arg, S, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::scalar_product), Arg, S > > >
 
struct  OpenKalman::interface::detail::scalar_quotient_defined_for_impl< T, Arg, S, typename >
 
struct  OpenKalman::interface::detail::scalar_quotient_defined_for_impl< T, Arg, S, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::scalar_quotient), Arg, S > > >
 
struct  OpenKalman::interface::detail::contract_defined_for_impl< T, A, B, typename >
 
struct  OpenKalman::interface::detail::contract_defined_for_impl< T, A, B, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::contract), A, B > > >
 
struct  OpenKalman::interface::detail::contract_in_place_defined_for_impl< T, on_the_right, A, B, typename >
 
struct  OpenKalman::interface::detail::contract_in_place_defined_for_impl< T, on_the_right, A, B, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template contract_in_place< on_the_right >), A, B > > >
 
struct  OpenKalman::interface::detail::cholesky_factor_defined_for_impl< T, tri, Arg, typename >
 
struct  OpenKalman::interface::detail::cholesky_factor_defined_for_impl< T, tri, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template cholesky_factor< tri >), Arg > > >
 
struct  OpenKalman::interface::detail::rank_update_self_adjoint_defined_for_impl< T, significant_triangle, A, U, Alpha, typename >
 
struct  OpenKalman::interface::detail::rank_update_self_adjoint_defined_for_impl< T, significant_triangle, A, U, Alpha, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template rank_update_hermitian< significant_triangle >), A, U, Alpha > > >
 
struct  OpenKalman::interface::detail::rank_update_triangular_defined_for_impl< T, tri, A, U, Alpha, typename >
 
struct  OpenKalman::interface::detail::rank_update_triangular_defined_for_impl< T, tri, A, U, Alpha, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template rank_update_triangular< tri >), A, U, Alpha > > >
 
struct  OpenKalman::interface::detail::solve_defined_for_impl< T, must_be_unique, must_be_exact, A, B, typename >
 
struct  OpenKalman::interface::detail::solve_defined_for_impl< T, must_be_unique, must_be_exact, A, B, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::template solve< must_be_unique, must_be_exact >), A, B > > >
 
struct  OpenKalman::interface::detail::LQ_decomposition_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::LQ_decomposition_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::LQ_decomposition), Arg > > >
 
struct  OpenKalman::interface::detail::QR_decomposition_defined_for_impl< T, Arg, typename >
 
struct  OpenKalman::interface::detail::QR_decomposition_defined_for_impl< T, Arg, std::enable_if_t< std::is_invocable_v< decltype(library_interface< stdex::remove_cvref_t< T >>::QR_decomposition), Arg > > >
 

Variables

template<typename T >
constexpr bool OpenKalman::interface::get_pattern_collection_defined_for = detail::get_pattern_collection_defined_for_impl<T>::value
 
template<typename T >
constexpr bool OpenKalman::interface::get_constant_defined_for = detail::get_constant_defined_for_impl<T>::value
 
template<typename T >
constexpr bool OpenKalman::interface::nested_object_defined_for = detail::nested_object_defined_for_impl<T>::value
 
template<typename T , applicability b = applicability::guaranteed>
constexpr bool OpenKalman::interface::is_square_defined_for = detail::is_square_defined_for_impl<T, b>::value
 
template<typename T >
constexpr bool OpenKalman::interface::is_triangular_adapter_defined_for = detail::is_triangular_adapter_defined_for_impl<T>::value
 
template<typename T >
constexpr bool OpenKalman::interface::is_hermitian_defined_for = detail::is_hermitian_defined_for_impl<T>::value
 
template<typename T >
constexpr bool OpenKalman::interface::hermitian_adapter_type_defined_for = detail::hermitian_adapter_type_defined_for_impl<T>::value
 
template<typename Derived , typename LibraryObject >
constexpr bool OpenKalman::interface::library_base_defined_for = detail::LibraryBase_defined_for_impl<Derived, LibraryObject>::value
 
template<typename LHS , typename RHS >
constexpr bool OpenKalman::interface::copy_from_defined_for = detail::copy_from_defined_for_impl<LHS, RHS>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::to_native_matrix_defined_for = detail::to_native_matrix_defined_for_impl<T, Arg>::value
 
template<typename T , typename layout , typename Scalar , typename D >
constexpr bool OpenKalman::interface::make_default_defined_for = detail::make_default_defined_for_impl<T, layout, Scalar, D>::value
 
template<typename T , typename layout , typename Arg , typename... Scalars>
constexpr bool OpenKalman::interface::fill_components_defined_for = detail::fill_components_defined_for_impl<T, layout, Arg, void, Scalars...>::value
 
template<typename T , typename C , typename Ds >
constexpr bool OpenKalman::interface::make_constant_defined_for = detail::make_constant_matrix_defined_for_impl<T, C, Ds>::value
 
template<typename T , typename Scalar , typename Ds >
constexpr bool OpenKalman::interface::make_identity_matrix_defined_for = detail::make_identity_matrix_defined_for_impl<T, Scalar, Ds>::value
 
template<typename T , triangle_type tri, typename Arg >
constexpr bool OpenKalman::interface::make_triangular_matrix_defined_for = detail::make_triangular_matrix_defined_for_impl<T, tri, Arg>::value
 
template<typename T , HermitianAdapterType adapter_type, typename Arg >
constexpr bool OpenKalman::interface::make_hermitian_adapter_defined_for = detail::make_hermitian_adapter_defined_for_impl<T, adapter_type, Arg>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::to_euclidean_defined_for = detail::to_euclidean_defined_for_impl<T, Arg>::value
 
template<typename T , typename Arg , typename V >
constexpr bool OpenKalman::interface::from_euclidean_defined_for = detail::from_euclidean_defined_for_impl<T, Arg, V>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::wrap_angles_defined_for = detail::wrap_angles_defined_for_impl<T, Arg>::value
 
template<typename T , typename Arg , typename BeginTup , typename SizeTup >
constexpr bool OpenKalman::interface::get_slice_defined_for = detail::get_slice_defined_for_impl<T, Arg, BeginTup, SizeTup>::value
 
template<typename T , typename Arg , typename Block , typename... Begin>
constexpr bool OpenKalman::interface::set_slice_defined_for = detail::set_slice_defined_for_impl<T, Arg, Block, Begin...>::value
 
template<typename T , triangle_type tri, typename A , typename B >
constexpr bool OpenKalman::interface::set_triangle_defined_for = detail::set_triangle_defined_for_impl<T, tri, A, B>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::to_diagonal_defined_for = detail::to_diagonal_defined_for_impl<T, Arg>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::diagonal_of_defined_for = detail::diagonal_of_defined_for_impl<T, Arg>::value
 
template<typename Arg >
constexpr bool OpenKalman::interface::conjugate_defined_for = detail::conjugate_defined_for_impl<Arg>::value
 
template<typename Arg , std::size_t indexa, std::size_t indexb>
constexpr bool OpenKalman::interface::transpose_defined_for = detail::transpose_defined_for_impl<Arg, indexa, indexb>::value
 
template<typename Arg >
constexpr bool OpenKalman::interface::matrix_transpose_defined_for = detail::matrix_transpose_defined_for_impl<Arg>::value
 
template<typename Arg , std::size_t indexa, std::size_t indexb>
constexpr bool OpenKalman::interface::adjoint_defined_for = detail::adjoint_defined_for_impl<Arg, indexa, indexb>::value
 
template<typename Arg >
constexpr bool OpenKalman::interface::matrix_adjoint_defined_for = detail::matrix_adjoint_defined_for_impl<Arg>::value
 
template<typename T , typename Arg , typename... Factors>
constexpr bool OpenKalman::interface::broadcast_defined_for = detail::broadcast_defined_for_impl<T, Arg, void, Factors...>::value
 
template<typename T , typename DTup , typename Op , typename... Args>
constexpr bool OpenKalman::interface::n_ary_operation_defined_for = detail::n_ary_operation_defined_for_impl<T, DTup, Op, void, Args...>::value
 
template<typename T , typename BinaryFunction , typename Arg , std::size_t... indices>
constexpr bool OpenKalman::interface::reduce_defined_for = detail::reduce_defined_for_impl<T, BinaryFunction, Arg, void, indices...>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::determinant_defined_for = detail::determinant_defined_for_impl<T, Arg>::value
 
template<typename T , typename... Args>
constexpr bool OpenKalman::interface::sum_defined_for = detail::sum_defined_for_impl<T, void, Args...>::value
 
template<typename T , typename Arg , typename S >
constexpr bool OpenKalman::interface::scalar_product_defined_for = detail::scalar_product_defined_for_impl<T, Arg, S>::value
 
template<typename T , typename Arg , typename S >
constexpr bool OpenKalman::interface::scalar_quotient_defined_for = detail::scalar_quotient_defined_for_impl<T, Arg, S>::value
 
template<typename T , typename A , typename B >
constexpr bool OpenKalman::interface::contract_defined_for = detail::contract_defined_for_impl<T, A, B>::value
 
template<typename T , bool on_the_right, typename A , typename B >
constexpr bool OpenKalman::interface::contract_in_place_defined_for = detail::contract_in_place_defined_for_impl<T, on_the_right, A, B>::value
 
template<typename T , triangle_type tri, typename Arg >
constexpr bool OpenKalman::interface::cholesky_factor_defined_for = detail::cholesky_factor_defined_for_impl<T, tri, Arg>::value
 
template<typename T , HermitianAdapterType significant_triangle, typename A , typename U , typename Alpha >
constexpr bool OpenKalman::interface::rank_update_self_adjoint_defined_for = detail::rank_update_self_adjoint_defined_for_impl<T, significant_triangle, A, U, Alpha>::value
 
template<typename T , triangle_type tri, typename A , typename U , typename Alpha >
constexpr bool OpenKalman::interface::rank_update_triangular_defined_for = detail::rank_update_triangular_defined_for_impl<T, tri, A, U, Alpha>::value
 
template<typename T , bool must_be_unique, bool must_be_exact, typename A , typename B >
constexpr bool OpenKalman::interface::solve_defined_for = detail::solve_defined_for_impl<T, must_be_unique, must_be_exact, A, B>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::LQ_decomposition_defined_for = detail::LQ_decomposition_defined_for_impl<T, Arg>::value
 
template<typename T , typename Arg >
constexpr bool OpenKalman::interface::QR_decomposition_defined_for = detail::QR_decomposition_defined_for_impl<T, Arg>::value
 

Detailed Description

Concepts for testing whether object_traits or library_interface definitions exist for a particular object.