#include <cstring>
#include <string>
#include <utility>
#include <wpi/detail/meta/cpp_future.h>
#include <wpi/detail/meta/detected.h>
Go to the source code of this file.
|
namespace | detail |
| detail namespace with internal helper functions
|
|
|
template<typename StringType , typename Arg > |
using | detail::string_can_append = decltype(std::declval< StringType & >().append(std::declval< Arg && >())) |
|
template<typename StringType , typename Arg > |
using | detail::detect_string_can_append = is_detected< string_can_append, StringType, Arg > |
|
template<typename StringType , typename Arg > |
using | detail::string_can_append_op = decltype(std::declval< StringType & >()+=std::declval< Arg && >()) |
|
template<typename StringType , typename Arg > |
using | detail::detect_string_can_append_op = is_detected< string_can_append_op, StringType, Arg > |
|
template<typename StringType , typename Arg > |
using | detail::string_can_append_iter = decltype(std::declval< StringType & >().append(std::declval< const Arg & >().begin(), std::declval< const Arg & >().end())) |
|
template<typename StringType , typename Arg > |
using | detail::detect_string_can_append_iter = is_detected< string_can_append_iter, StringType, Arg > |
|
template<typename StringType , typename Arg > |
using | detail::string_can_append_data = decltype(std::declval< StringType & >().append(std::declval< const Arg & >().data(), std::declval< const Arg & >().size())) |
|
template<typename StringType , typename Arg > |
using | detail::detect_string_can_append_data = is_detected< string_can_append_data, StringType, Arg > |
|
|
std::size_t | detail::concat_length () |
|
template<typename... Args> |
std::size_t | detail::concat_length (const char *cstr, Args &&... rest) |
|
template<typename StringType , typename... Args> |
std::size_t | detail::concat_length (const StringType &str, Args &&... rest) |
|
template<typename... Args> |
std::size_t | detail::concat_length (const char, Args &&... rest) |
|
template<typename OutStringType > |
void | detail::concat_into (OutStringType &) |
|
template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&detect_string_can_append_op< OutStringType, Arg >::value, int > = 0> |
void | detail::concat_into (OutStringType &out, Arg &&arg, Args &&... rest) |
|
template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&!detect_string_can_append_op< OutStringType, Arg >::value &&detect_string_can_append_iter< OutStringType, Arg >::value, int > = 0> |
void | detail::concat_into (OutStringType &out, const Arg &arg, Args &&... rest) |
|
template<typename OutStringType = std::string, typename... Args> |
OutStringType | detail::concat (Args &&... args) |
|