相关疑难解决方法(0)

constexpr连接两个或多个char字符串

我正在尝试创建一个constexpr函数,它将连接Xeo的以下答案来连接任意数量的char数组,它连接两个char数组.

/sf/answers/930612091/

#include <array>

template<unsigned... Is> struct seq{};
template<unsigned N, unsigned... Is>
struct gen_seq : gen_seq<N-1, N-1, Is...>{};
template<unsigned... Is>
struct gen_seq<0, Is...> : seq<Is...>{};

template<unsigned N1, unsigned... I1, unsigned N2, unsigned... I2>
constexpr std::array<char const, N1+N2-1> concat(char const (&a1)[N1], char const (&a2)[N2], seq<I1...>, seq<I2...>){
  return {{ a1[I1]..., a2[I2]... }};
}

template<unsigned N1, unsigned N2>
constexpr std::array<char const, N1+N2-1> concat(char const (&a1)[N1], char const (&a2)[N2]){
  return concat(a1, a2, gen_seq<N1-1>{}, gen_seq<N2>{});
}
Run Code Online (Sandbox Code Playgroud)

我到目前为止的尝试:

#include <iostream>
#include <array>

template<unsigned... Is> struct seq{}; …
Run Code Online (Sandbox Code Playgroud)

c++ templates constexpr c++11

11
推荐指数
2
解决办法
5010
查看次数

使用constexpr编译时间字符串连接

#include <iostream>
#include <string>

constexpr std::string appendStringC(std::string s)
{
    return s + " Constexpr func";
}

std::string appendString(std::string s)
{
    return s + " Regular func";
}

int main()
{
    std::string s1 = "String 1";
    std::string s2 = "String 2";
    std::cout << std::endl
              << appendStringC(s1) << std::endl
              << appendString(s2) << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用constexpr执行编译时字符串前缀/后缀连接操作.但是,此示例产生以下错误:

const_string_generation.cpp: In function ‘constexpr std::__cxx11::string appendStringC(std::__cxx11::string)’:
const_string_generation.cpp:4:23: error: invalid type for parameter 1 of constexpr function ‘constexpr std::__cxx11::string appendStringC(std::__cxx11::string)’
 constexpr std::string appendStringC(std::string s)
                       ^
In …
Run Code Online (Sandbox Code Playgroud)

c++ string

6
推荐指数
1
解决办法
1466
查看次数

标签 统计

c++ ×2

c++11 ×1

constexpr ×1

string ×1

templates ×1