/* @copyright Louis Dionne 2014 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #include #include using namespace boost::hana; template struct ImplicitConvertibleTo { constexpr operator T() const { return {}; } }; struct T { }; struct invalid; static_assert(std::is_same< common_t, T >{}, ""); static_assert(std::is_same< common_t, T>, T >{}, ""); static_assert(std::is_same< common_t>, T >{}, ""); static_assert(has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); int main() { }