卤化物:Var声明格式

Halide: Var declaration format

在岩盐生成器中声明 Var 时 class,为什么需要像

这样使用大括号
Var x{"x"}

如果是在generate()函数之外,如果是在generate()函数内部,可以这样用花括号或者括号

void generate()
{
    Var x("x");
    Var y{"y"};
}

这两种声明方式有什么区别,为什么函数内外要求的格式不同?

因为这就是 C++ 语法的工作原理。大括号称为 "uniform initialization" 并且是 C++11 中的新功能。括号基本上是第一版 C++ 的构造函数语法,仅在某些地方允许使用。 Halide 嵌入在 C++ 中,因此既不能消除标准构造函数语法,也不能将其添加到不支持的地方。搜索 "C++ uniform initialization" 以获取更多信息。