/* @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; struct Disabled; struct Typeclass; namespace boost { namespace hana { BOOST_HANA_TYPECLASS_BOILERPLATE(::Typeclass) }} struct Typeclass : typeclass { }; // Instance enabled for all data types. template struct Typeclass::instance { }; // Instance explicitly disabled for `Disabled`. template <> struct Typeclass::instance : disable { }; int main() { BOOST_HANA_STATIC_ASSERT(instantiates); BOOST_HANA_STATIC_ASSERT(!instantiates); }