/* * Created by Jozef on 02/12/2018. * Copyright 2018 Two Blue Cubes Ltd. All rights reserved. * * 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) */ #ifndef TWOBLUECUBES_CATCH_META_HPP_INCLUDED #define TWOBLUECUBES_CATCH_META_HPP_INCLUDED #include namespace Catch { template< typename... > struct TypeList {}; template< typename... > struct append; template< template class L1 , typename...E1 , template class L2 , typename...E2 > struct append< L1, L2 > { using type = L1; }; template< template class L1 , typename...E1 , template class L2 , typename...E2 , typename...Rest > struct append< L1, L2, Rest...> { using type = typename append< L1, Rest... >::type; }; template< template class , typename... > struct rewrap; template< template class Container , template class List , typename...elems > struct rewrap> { using type = TypeList< Container< elems... > >; }; template< template class Container , template class List , class...Elems , typename...Elements> struct rewrap, Elements...> { using type = typename append>, typename rewrap::type>::type; }; template< template class...Containers > struct combine { template< typename...Types > struct with_types { template< template class Final > struct into { using type = typename append, typename rewrap::type...>::type; }; }; }; template struct always_false : std::false_type {}; } // namespace Catch #endif // TWOBLUECUBES_CATCH_META_HPP_INCLUDED