我相信你不能 - 主要问题是你如何从函数中得到结果。当你返回一个字符串时,你实际上可以返回(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
Run Code Online (Sandbox Code Playgroud)
再想一想,您可以避免实际计算字符串,而只存储调用的参数sprintf以供以后使用。如果用户constexpr想要获得 ,则可以调用该中间结果的非方法char*,但单个字符可以通过constexpr函数获得。这将是一个非正统的版本sprintf,我不确定它是否重要。
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |