我知道这段代码是邪恶的,我知道我不应该这样做,我知道我会在编码器中烧掉这个但是无论如何:
据我所知,可以将int
用作template parmerer
std::get
。
我想使用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();
}
有两个缺点:
完美将是
printer<"bla"> print;
但编译器显然不喜欢这个
任何人都可以帮助我克服至少后者的“问题”
修改的 我正在使用g ++ 4.8.0
答案 0 :(得分:1)
如果你真的需要将它用作模板参数,那么这是一个新尝试! :)
修改强>
template<char... str>
struct staticString {
static std::string c_str() {
return std::string{str...}.c_str();
}
};
基本上,char...
变量应该可以解决问题。