#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, const Args &... rest) |
|
template<typename StringType , typename... Args> |
std::size_t | detail::concat_length (const StringType &str, const Args &... rest) |
|
template<typename... Args> |
std::size_t | detail::concat_length (const char, const 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) |
|