gpt4 book ai didi

c++ - 指向静态作为模板参数的指针/使用 c 字符串实例化模板

转载 作者:行者123 更新时间:2023-11-28 07:15:35 25 4
gpt4 key购买 nike

我知道这段代码是邪恶的,我知道我不应该这样做,我知道我会为此在程序员 hell 中燃烧,但无论如何:

众所周知,可以像 std::get 那样使用 int 作为 template parmerer。我想使用 char *

template<char * str>
struct printer {
void operator() () const {
std::cout<<str;
}
};

到目前为止,在 this article 的帮助下我设法让这个编译和运行

template<char ** str>
struct printer {
void operator() () const {
std::cout<< *str;
}
};

extern char * bla;
char * bla = (char *)"bla content";

int main() {
printer<&bla> print;
print();
}

有两个缺点:

  1. 双指针
  2. 我必须在远离我使用它们的地方定义值(字符串内容)

会很完美

printer<"bla"> print;

但是编译器显然不喜欢这样

谁能帮我克服至少后一个“问题”

编辑我正在使用 g++ 4.8.0

最佳答案

如果你真的需要将它用作模板参数,那就来个新的尝试吧! :)

编辑:

http://ideone.com/NGgXxT

template<char... str>
struct staticString {
static std::string c_str() {
return std::string{str...}.c_str();
}
};

基本上,char... 可变参数应该可以解决问题。

关于c++ - 指向静态作为模板参数的指针/使用 c 字符串实例化模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20274905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com