gpt4 book ai didi

c++ - constexpr "[v[n]]sprintf"可能吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:26 24 4
gpt4 key购买 nike

我的直觉答案是肯定的,并且实现也可以由“printf”使用。并且可能很容易重载用户定义的类型。

以前有人尝试过吗?

最佳答案

我相信你不能 - 主要问题是你如何从函数中得到结果。当您返回一个字符串时,您实际上可以返回 (1) new-ed 缓冲区(或同样糟糕的 malloced),(2) 静态缓冲区或(3) 填充一些其他缓冲区。

(1) 显然是不允许的

(2) 违反了 sprintf 的约定(即非 constexpr sprintf 也不能这样做)

(3) constexpr 中不可能赋值。

如果你只是想要“像 sprintf 这样的东西”,而不考虑可能不方便的用法,例如。像这样的界面会起作用:

my_sprintf<my_string<'%', 'd', '%', 'c'>, my_data<int, 42>, my_data<char, 'l'> >::string_value

再三考虑,您可以避免实际计算字符串,而只需存储 sprintf 调用的参数以备后用。如果用户想获得 char*,则他可以调用该中间结果的非 constexpr 方法,但是单个字符可以通过 constexpr 获得 功能。那将是 sprintf 的非正统版本,我不确定它是否算数。

关于c++ - constexpr "[v[n]]sprintf"可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660562/

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