【发布时间】:2018-08-29 13:46:44
【问题描述】:
所以,我正试图像一个人那样弄乱constexpr 字符串,而且到目前为止真的只有这个:
template<char... CS> struct text {
static constexpr char c_str[] = {CS...};
static constexpr int size = sizeof...(CS);
};
这样就可以编译了
text<'a','b','c'> t;
std::cout<< t.c_str <<std::endl;
并按预期输出'abc'。
我想知道是否有一种不复杂的方式来做相反的事情;有一个函数返回一个文本类型,其中包含必要的char 模板参数,给定一个char 数组。
【问题讨论】:
-
您可能想检查一下:isocpp.org/blog/2018/03/… 编译时字符串将受益于标准的未来发展。在那之前,令人费解的是要走的路
-
你在哪里坚持返回这种类型?你的 char 数组在编译时是已知的,对吧?
-
@DrewDormann 我想我只是不明白你如何从一个带有 char 数组参数的函数转到一个“文本”对象,数组中的每个字符都作为新对象的模板传递争论。你会建议什么样的解决方案?
-
我怀疑解决方案会非常复杂。您正在尝试将函数参数(将在运行时检查的东西)转换为必须在编译时知道的返回类型。
-
或者换句话说,函数不会返回像
text这样的模板。它们必须返回特定类型。
标签: c++ c++11 variadic-templates template-meta-programming constexpr