小编Ric*_*ade的帖子

编译时文字字符串作为模板参数

我正在尝试将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

5
推荐指数
1
解决办法
1518
查看次数