我必须用struct MHD_OptionItem
类型的元素填充std::vector
。 这个结构有这样实现:C++初始化程序列表
struct MHD_OptionItem
{
enum MHD_OPTION option;
intptr_t value;
void *ptr_value;
};
我已经试过这样:
vector<struct MHD_OptionItem> iov;
if(...)
iov.push_back({ MHD_OPTION_NOTIFY_COMPLETED, requestCompleted, NULL });
if(...)
iov.push_back({ MHD_OPTION_CONNECTION_TIMEOUT, connectionTimeout });
[....]
但g ++编译器,符合市场预期,对我说:
warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
我知道我可以初始化一个临时结构体,然后将它传递给向量,但是这种方法在我看来是低效的,并不那么优雅。
我无法更改插入构造函数的结构,因为这不是我的代码,而是包含了一个库。
有没有一种优雅的方式来做到这一点,而不使用C++ 0x语法?
实际上,您正在制作1份额外的'MHD_OptionItem'副本。 – iammilind
@iammilind:那又如何?对于RVO来说,这是一个简单的例子。 – ybungalobill
仿函数是什么,为什么不使用普通函数呢? –