/* @copyright Louis Dionne 2015 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, T>{}, ""); static_assert(std::is_same, invalid>{}, ""); static_assert(std::is_same, void>{}, ""); static_assert(std::is_same, T>, T>{}, ""); static_assert(std::is_same>, T>{}, ""); static_assert(has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); static_assert(!has_common{}, ""); int main() { }