26 #ifndef MLN_VALUE_SCALAR_HH
27 # define MLN_VALUE_SCALAR_HH
33 # include <mln/value/concept/scalar.hh>
34 # include <mln/metal/is_a.hh>
35 # include <mln/metal/if.hh>
45 class scalar_ :
public Scalar< scalar_<T> >
60 explicit scalar_(
const T& val);
69 template <
typename T>
class scalar_< scalar_<T> >;
74 std::ostream& operator<<(std::ostream& ostr, const scalar_<T>& s);
86 typedef mlc_is_a(T, Scalar) is_scalar_;
87 typedef mlc_if(is_scalar_, T, scalar_<T>) ret;
95 typename internal::helper_scalar_<T>::ret
101 # ifndef MLN_INCLUDE_ONLY
105 template <
typename T>
107 scalar_<T>::scalar_()
111 template <
typename T>
113 scalar_<T>::scalar_(
const T& val)
118 template <
typename T>
121 scalar_<T>::to_equiv()
const
128 template <
typename T>
130 std::ostream& operator<<(std::ostream& ostr, const scalar_<T>& s)
132 return ostr << s.to_equiv();
137 template <
typename T>
139 typename internal::helper_scalar_<T>::ret
142 typename internal::helper_scalar_<T>::ret tmp(s);
146 # endif // ! MLN_INCLUDE_ONLY
153 #endif // ! MLN_VALUE_SCALAR_HH