我正在尝试将C++文字字符串转换为以下模板的实例:
template <char ... C>
struct string_literal {
typedef string_constant type;
static constexpr const char value[sizeof...(C)] = {C...};
constexpr operator const char* (void) const {
return value;
}
};
template <char ... C>
constexpr const char string_literal<C...>::value[sizeof...(C)];
Run Code Online (Sandbox Code Playgroud)
我想出了基于各种来源的这些帮助器,用于将引用的字符串值"解包"到上面的模板中.
template <unsigned N, const char (&S) [N], typename U>
struct selector;
template <unsigned N, const char (&S) [N], unsigned ...I>
struct selector<N, S, index_sequence<I...>> {
using type = string_literal<S[I]...>;
};
template <unsigned N, const char (&S) [N]>
struct unpack {
using type …Run Code Online (Sandbox Code Playgroud) string-literals template-meta-programming variadic-templates constexpr c++11