【发布时间】:2016-01-21 13:52:36
【问题描述】:
将代码转换为constexpr 的一般提示是什么?比如说,有一种算法可以对(输入)几何图形进行一些几何变换。输入和输出在性质和大小上有所不同,并且相互依赖非常重要。目前它实现为一个类,目前使用std::map和std::vector(不失一般性)。
有什么方法可以重构代码,使用动态内存来获取符合常量表达式要求的代码?
我可以想象constexpr 兼容容器和constexpr 兼容实现"stack allocator"(用于足够大的存储空间)的某种组合,用于每个value_type 使用的容器。但是有一个问题:我从来没有遇到过这样的容器。但也许还有其他方法?
【问题讨论】:
-
这太笼统了。
-
@DavidHaim 哪里有这样的一般问题?我把问题移到那个地方。有类似的地方吗?
-
您有什么东西应该(或可能)是编译时表达式或值吗?您是否有满足
constexprfunction 的所有要求的功能?然后你可以创建表达式、变量或函数constexpr。如果你做了一些东西constexpr并没有什么坏处,如果它真的不是或不能是编译时常量,它只是暗示const在这种情况下。 -
@JoachimPileborg 目前没有,但想要。我不使用
reinterpret_cast,放置new和其他奇怪的东西。但我想写一个constexpr代码,从读者的角度来看,它类似于非constexpr对应的代码。我想建立某种双射。
标签: c++ c++11 containers c++14 constexpr