#include #include #include "../mcc_fsm.h" struct S { }; int main() { using namespace mcc; typedef fsm::unique_tuple_t ut_t; std::cout << "type index: " << fsm::unique_tuple_type_index_t::index << " (double)\n"; std::cout << "type index: " << fsm::unique_tuple_type_index_t::index << " (int)\n"; std::cout << "type index: " << fsm::unique_tuple_type_index_t::index << " (long)\n"; // std::cout << "type index: " << fsm::unique_tuple_type_index_t::index << " (struct S)\n"; std::cout << typeid(ut_t::tuple_t).name() << "\n"; std::cout << typeid(ut_t::non_unique_t).name() << "\n"; typedef fsm::pair_holder_t, std::pair, std::pair> ph_t; // using s_t = fsm::pair_holder_find_t::result_t; using s_t = fsm::pair_holder_find_t::result_t; if constexpr (std::is_null_pointer_v) { std::cout << "second type: invalid input type!\n"; } else { std::cout << "second type: " << typeid(s_t).name() << "\n"; } using t1_t = fsm::pair_holder_first_t::first_t; std::cout << "first types: " << typeid(t1_t).name() << "\n"; using t2_t = fsm::pair_holder_second_t::second_t; std::cout << "second types: " << typeid(t2_t).name() << "\n"; return 0; }