#ifndef SPROUT_STRING_CONCAT_HPP #define SPROUT_STRING_CONCAT_HPP #include #include #include #include #include #include #include #include namespace sprout { // // operator+ // template inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::push_back, T>::type operator+( sprout::basic_string const& lhs, T const& rhs ) { return sprout::fixed::push_back(lhs, rhs); } template inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::push_front, T>::type operator+( T const& lhs, sprout::basic_string const& rhs ) { return sprout::fixed::push_front(rhs, lhs); } template inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::append_back< sprout::basic_string, sprout::basic_string >::type operator+( sprout::basic_string const& lhs, T const (& rhs)[N2] ) { return sprout::fixed::append_back(lhs, sprout::to_string(rhs)); } template inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::append_front< sprout::basic_string, sprout::basic_string >::type operator+( T const (& lhs)[N2], sprout::basic_string const& rhs ) { return sprout::fixed::append_front(rhs, sprout::to_string(lhs)); } template inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::append_back< sprout::basic_string, sprout::basic_string >::type operator+( sprout::basic_string const& lhs, sprout::basic_string const& rhs ) { return sprout::fixed::append_back(lhs, rhs); } } // namespace sprout #endif // #ifndef SPROUT_STRING_CONCAT_HPP