在许多情况下,我希望能够断言某个值不会在运行时求值。例如,在构造一些参数化 struct 时Foo{A} where {A}
,我想确保A
在解析时已知并且不能通过动态分派确定。例如类似的东西Foo{@isstatic A}()
。
有办法强制执行吗?
更新1:
也许我想要的是检查类型是否是Core.Compiler.Const
(例如通过类型断言)?但我怀疑这是否是正确的做法。
更新2:
也许另一种表达方式是:是否有类似constexpr
Julia 中的 C++ 的东西旨在在 Base 之外使用?
有时访问类型的非参数化版本会很有帮助。例如,如果我有一些foo::Foo{A,B}
东西的话,那就很好basetype(foo::Foo{args...}) = Foo
。朱莉娅会提供这样的东西吗?