// Copyright Louis Dionne 2013-2017 // 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 namespace hana = 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(hana::has_common{}, ""); static_assert(!hana::has_common{}, ""); static_assert(!hana::has_common{}, ""); static_assert(!hana::has_common{}, ""); static_assert(!hana::has_common{}, ""); int main() { }