namespace std {
template<std::size_t I, typename T, std::size_t N, typename Traits>
struct tuple_element<I, sprout::basic_string<T, N, Traits> >;
}
// syntax
std::tuple_element<I, basic_string<T, N, Traits> >::type
#include <sprout/string.hpp>
#include <type_traits>
using namespace sprout;
using type = string<8>;
using element_type = std::tuple_element<0, type>::type;
static_assert(std::is_same<element_type, char>::value, "tuple element type of string is char.");