我必須用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
仿函數是什麼,爲什麼不使用普通函數呢? –