#pragma once
#include <string>
#include <vector>
#include <folly/Range.h>
namespace folly {
template <typename T, std::size_t M, typename P>
class small_vector;
template <typename T, typename Allocator>
class fbvector;
template <class Char>
class fbstring_core;
template <typename E, typename T, typename A, typename Storage>
class basic_fbstring;
namespace detail {
PredeclareFbString;
template <typename Container>
struct SimdSplitByCharImpl { … };
template <typename Container>
struct SimdSplitByCharImplToStrings { … };
isSimdSplitSupportedStringViewType;
isSimdSplitSupportedStringType;
template <typename>
struct SimdSplitByCharIsDefinedFor { … };
SimdSplitByCharIsDefinedFor<std::vector<T>>;
SimdSplitByCharIsDefinedFor<folly::fbvector<T, A>>;
SimdSplitByCharIsDefinedFor<folly::small_vector<T, M, void>>;
template <typename Container>
std::enable_if_t<
isSimdSplitSupportedStringViewType<typename Container::value_type>>
simdSplitByChar(
char sep, folly::StringPiece what, Container& res, bool ignoreEmpty) { … }
template <typename Container>
std::enable_if_t<isSimdSplitSupportedStringType<typename Container::value_type>>
simdSplitByChar(
char sep, folly::StringPiece what, Container& res, bool ignoreEmpty) { … }
#define FOLLY_DETAIL_DECLARE_ALL_SIMD_SPLIT_OVERLOADS …
FOLLY_DETAIL_DECLARE_ALL_SIMD_SPLIT_OVERLOADS(folly::StringPiece)
FOLLY_DETAIL_DECLARE_ALL_SIMD_SPLIT_OVERLOADS(std::string_view)
extern template struct SimdSplitByCharImplToStrings<std::vector<std::string>>;
extern template struct SimdSplitByCharImplToStrings<
std::vector<PredeclareFbString>>;
extern template struct SimdSplitByCharImplToStrings<
fbvector<std::string, std::allocator<std::string>>>;
extern template struct SimdSplitByCharImplToStrings<
fbvector<PredeclareFbString, std::allocator<PredeclareFbString>>>;
#undef FOLLY_DETAIL_DECLARE_ALL_SIMD_SPLIT_OVERLOADS
}
}