// Copyright (c) 2016 Klemens D. Morgenstern // // 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 BOOST_PROCESS_DETAIL_TRAITS_DECL_HPP_ #define BOOST_PROCESS_DETAIL_TRAITS_DECL_HPP_ #include #include #include #if defined(BOOST_POSIX_API) #include #elif defined(BOOST_WINDOWS_API) #include #endif namespace boost { namespace process { namespace detail { template struct is_initializer : std::is_base_of {}; template struct is_initializer : std::is_base_of {}; template struct initializer_tag;// { typedef void type; }; //remove const template struct initializer_tag { typedef typename initializer_tag::type type; }; //remove & template struct initializer_tag { typedef typename initializer_tag::type type; }; //remove const & template struct initializer_tag { typedef typename initializer_tag::type type; }; template struct initializer_builder; template struct valid_argument_list; template struct valid_argument_list { constexpr static bool value = is_initializer::value || !std::is_void::type>::value; typedef std::integral_constant type; }; template struct valid_argument_list { constexpr static bool my_value = is_initializer::value || !std::is_void::type>::value; constexpr static bool value = valid_argument_list::value && my_value; typedef std::integral_constant type; }; }}} #endif /* BOOST_PROCESS_DETAIL_HANDLER_HPP_ */