/*-----------------------------------------------------------------------------+ Copyright (c) 2008-2010: Joachim Faulhaber +------------------------------------------------------------------------------+ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENCE.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +-----------------------------------------------------------------------------*/ #ifndef BOOST_ICL_TYPE_TRAITS_UNIT_ELEMENT_HPP_JOFA_080912 #define BOOST_ICL_TYPE_TRAITS_UNIT_ELEMENT_HPP_JOFA_080912 #include #include #include namespace boost{ namespace icl { template struct unit_element{ static Type value(); }; template<> inline bool unit_element::value() { return true;} template<> inline float unit_element::value() { return 1.0; } template<> inline double unit_element::value() { return 1.0; } template<> inline long double unit_element::value() { return 1.0; } // Smallest 'visible' string that is greater than the empty string. template <> inline std::string unit_element::value() { return std::string(" "); } template inline Type unit_element::value() { return icl::succ(identity_element::value()); } }} // namespace boost icl #endif