// 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 namespace hana = boost::hana; template struct invalid { static_assert(b, "invalid must not be instantiated"); }; template void adl(T) { } template void adl_pattern(hana::basic_type) { } int main() { // ADL kicks in but `invalid<>` must not instantiated adl(hana::type_c>); adl_pattern(hana::type_c>); // ADL instantiates the types recursively, make sure that works too adl(hana::typeid_(hana::type_c>)); adl_pattern(hana::typeid_(hana::type_c>)); }