2015-11-02 64 views

回答

3

這C++ 11標準部13.3.3.1.5[over.ics.list]其說,草案被覆蓋:

否則,如果參數類型是不是一類:

[...]

  • 如果初始化程序列表中沒有元素,則隱式轉換序列是標識轉換。 [實施例:

    void f(int); 
    f({ }); // OK: identity conversion 
    

末端示例]

等的標識轉換會比一個構造函數調用更好。

我們得到nullptr的原因是因爲它是初始化指針的值。從部分8.5.4[dcl.init.list]

對象或類型T的參考的列表的初始化被定義如下:

[...]

  • 否則,如果初始化程序列表中沒有元素,則對該對象進行值初始化。 [實施例:

    int** pp {}; // initialized to null pointer 
    

末端示例]