gpt4 book ai didi

只接受字符串文字的 C++11 函数?

转载 作者:IT王子 更新时间:2023-10-28 23:58:59 25 4
gpt4 key购买 nike

我想编写一个只接受字符串文字作为参数的 C++11 函数:

 void f(const char* s) { static_assert(s is a string literal); ... }

即:

 f("foo"); // OK

char c = ...;
f(&c); // ERROR: Doesn't compile

string s = ...;
f(s.c_str()); // ERROR: Doesn't compile

etc

有什么办法可以实现吗?该函数的签名可以更改,添加宏或任何其他语言功能的使用也是如此。

如果这不可能,最接近的近似值是多少? (用户定义的字面值有什么帮助吗?)

如果不是,在 GCC 4.7/Linux 中是否有特定于平台的方法?

最佳答案

我想你最接近的就是这个

template<int N>
void f(const char (&str)[N]){
...
}

它将编译文字和数组,但不编译指针。

关于只接受字符串文字的 C++11 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13724242/

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