作为一个示例,给定constexpr字符串文字,我想将其转换为另一个constexpr数据结构。由于此转换是完全无副作用的,因此,我希望有一种在编译时执行此操作的方法(没有预处理器,但具有标准的C ++语言功能)。
现在,我可以肯定的是,我曾经读过一篇有关C ++ 2a(或更高版本)的潜在将来功能的介绍,该功能将允许在constexpr函数中动态分配内存,这肯定是解决我的问题的方法。-但我再也找不到该文章了。
是否已经有一种方法可以在C ++中的constexpr上下文中执行动态内存分配,或者没有人知道哪篇论文对此提出了建议?
我正在尝试Vector< ^F>在F#中实现泛型类,^F矢量元素的基础字段类型在哪里?这意味着,^F可以是满足加,减,乘和负的任何事物。
一些示例用户代码如下所示:
let v = Vector<int>([| 1; 2; 3 |])
let w = Vector<int>([| 4; 5; 6 |])
let sum = v + w
Run Code Online (Sandbox Code Playgroud)
所以在这里我用的类型int,它可能是任何一个满足基本的基本操作如上所述。使用.NET样式泛型时,我似乎可以使用某些版本,但是我也遇到了问题。由于无论如何我都想使用SRTP,因此我再次走了这条路:
type Vector< ^F when ^F : (static member (~-): ^F -> ^F)
and ^F : (static member (+): ^F * ^F -> ^F)
and ^F : (static member (*): ^F * ^F -> ^F)
>(_values: ^F[]) =
let values: ^F [] = …Run Code Online (Sandbox Code Playgroud)