關於C++ 11語法的簡單問題。有一個示例代碼(從source減少一個)用大括號調用ctor
struct Wanderer
{
explicit Wanderer(std::vector<std::function<void (float)>> & update_loop)
{
update_loop.emplace_back([this](float dt) { update(dt); });
}
void update(float dt);
};
int main()
{
std::vector<std::function<void (float)>> update_loop;
Wanderer wanderer{update_loop}; // why {} ???
}
我想知道,怎麼能是可能調用構造函數用兩個大括號一樣Wanderer wanderer{update_loop};
這既不是初始化列表,也沒有統一的初始化。這是什麼?
但它是統一的初始化。大括號可以用來調用構造函數,但構造函數始終首選該類型的'std :: initializer_list'。 – chris 2013-03-13 20:47:59
'//爲什麼{} ???' - 好問題。沒有理由比'Wanderer流浪者(update_loop)'更喜歡這個。 – ipc 2013-03-13 20:50:42
@ipc在某些情況下,它可以避免最令人頭疼的解析。 – juanchopanza 2013-03-13 20:51:33