summaryrefslogtreecommitdiff
path: root/boost/hana/experimental/printable.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/hana/experimental/printable.hpp')
-rw-r--r--boost/hana/experimental/printable.hpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/boost/hana/experimental/printable.hpp b/boost/hana/experimental/printable.hpp
index 20993740dd..240e3a9291 100644
--- a/boost/hana/experimental/printable.hpp
+++ b/boost/hana/experimental/printable.hpp
@@ -41,6 +41,9 @@ Distributed under the Boost Software License, Version 1.0.
BOOST_HANA_NAMESPACE_BEGIN namespace experimental {
+ template <typename T>
+ struct Printable;
+
//! @cond
template <typename T, typename = void>
struct print_impl : print_impl<T, hana::when<true>> { };
@@ -70,7 +73,16 @@ BOOST_HANA_NAMESPACE_BEGIN namespace experimental {
struct print_t {
template <typename T>
std::string operator()(T const& t) const {
- using Print = print_impl<typename hana::tag_of<T>::type>;
+ using Tag = typename hana::tag_of<T>::type;
+ using Print = BOOST_HANA_DISPATCH_IF(print_impl<Tag>,
+ hana::experimental::Printable<Tag>::value
+ );
+
+ #ifndef BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS
+ static_assert(hana::experimental::Printable<Tag>::value,
+ "hana::experimental::print(t) requires 't' to be Printable");
+ #endif
+
return Print::apply(t);
}
};