/* @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 f { }; struct x1; struct x2; struct x3; int main() { // make sure the types are good static_assert(std::is_same()), f<>>{}, ""); static_assert(std::is_same(type)), f>{}, ""); static_assert(std::is_same(type, type)), f>{}, ""); static_assert(std::is_same(type, type, type)), f>{}, ""); // make sure we can use it; we already made sure the return type was correct trait(); trait(type); trait(type, type); trait(type, type, type); }