我想声明一个类模板,其中一个模板参数采用字符串文字,例如 my_class<"string">
。
任何人都可以给我一些可编译的代码来声明一个简单的类模板吗?
注意:这个问题的 先前措辞 对于提问者实际试图完成的内容相当模棱两可,并且可能应该因为不够清楚而被关闭。然而,从那时起,这个问题多次被称为规范的“字符串文字类型参数”问题。因此,它已被重新措辞以同意该前提。
原文由 Mawg says reinstate Monica 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想声明一个类模板,其中一个模板参数采用字符串文字,例如 my_class<"string">
。
任何人都可以给我一些可编译的代码来声明一个简单的类模板吗?
注意:这个问题的 先前措辞 对于提问者实际试图完成的内容相当模棱两可,并且可能应该因为不够清楚而被关闭。然而,从那时起,这个问题多次被称为规范的“字符串文字类型参数”问题。因此,它已被重新措辞以同意该前提。
原文由 Mawg says reinstate Monica 发布,翻译遵循 CC BY-SA 4.0 许可协议
我没有看到提到的另一个 C++20 解决方案,但它足够简单并且适合我自己的需要,它是使用 constexpr lambda 作为 NTTP 返回字符串:
#include <string_view>
template<auto getStrLambda>
struct MyType {
static constexpr std::string_view myString{getStrLambda()};
};
int main() {
using TypeWithString = MyType<[]{return "Hello world!";}>;
return 0;
}
编译器资源管理器示例 在这里。
原文由 James Mart 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
抱歉,C++ 目前不支持使用字符串文字(或真实文字)作为模板参数。
但是重新阅读您的问题,这就是您要问的吗?你不能说:
但你可以说