在许多情况下,我希望能够断言一个值在运行时没有被评估。例如,在构造一些参数化结构
有办法强制执行吗?
更新 1:
也许我想要的是检查类型是否为
更新2:
也许另一种表达方式是:在Julia中是否有类似于C++中用于除了Base之外的代码的
Foo{A} where {A}
时,我想确保A
在解析时已知,并且不能通过动态调度确定。例如:Foo{@isstatic A}()
。有办法强制执行吗?
更新 1:
也许我想要的是检查类型是否为
Core.Compiler.Const
(例如通过类型断言)?但我怀疑这是否是正确的做法。更新2:
也许另一种表达方式是:在Julia中是否有类似于C++中用于除了Base之外的代码的
constexpr
?
constexpr k
在我的函数内,并在各种地方使用它作为模板参数。在Julia中,如果我定义一个变量k
,并将其用作某个构造函数或函数调用的参数,如果编译器无法确定它是编译时常量,则可能会意外地使事情不稳定。值类型可能是一个选择,但它们很麻烦。 - lassepe@code_warntype
宏是您的好朋友。但最好的阅读材料是https://docs.julialang.org/en/v1/manual/performance-tips/index.html 希望这可以帮助您。 - Przemyslaw Szufel