我好几年没用过C++了,刚刚遇到过这个问题:
program.build({ default_device })
Run Code Online (Sandbox Code Playgroud)
定义是:
cl_int build(
const VECTOR_CLASS<Device>& devices,
const char* options = NULL,
void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL,
void* data = NULL) const
Run Code Online (Sandbox Code Playgroud)
那里的花括号是什么?我之前从未见过像这样的函数调用.我假设它与函数指针有关,但这似乎是可选的?
typ*_*232 27
std::vector有一个构造函数,需要一个std::initializer_list.
initializer_list可以用花括号表示.
因此,此代码创建一个包含其中一个的向量,default_device并将其传递给build成员函数.
Sho*_*hoe 14
在:
program.build({ default_device })
Run Code Online (Sandbox Code Playgroud)
您将自动实例化一个临时VECTOR_CLASS<Device>对象.它相当于:
program.build(VECTOR_CLASS<Device>{ default_device })
Run Code Online (Sandbox Code Playgroud)
这相当于:
program.build(std::vector<Device>{ default_device })
Run Code Online (Sandbox Code Playgroud)
这将调用的std::initializer_list构造函数:
std::vector::vector(std::initializer_list<T> init,
const Allocator& alloc = Allocator());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4113 次 |
| 最近记录: |