共用方式為


編譯器錯誤 C3445

'type' 的 copy-list-initialization 不得使用明確的建構函式

備註

根據 ISO C++17 標準,編譯程式必須考慮複製清單初始化中多載解析的明確建構函式,但如果實際選擇該多載,就必須引發錯誤。

從 Visual Studio 2017 開始,編譯程式會使用 Visual Studio 2015 找不到的初始化運算式清單,尋找與建立對象相關的錯誤。 這些錯誤可能會導致運行時間當機或未定義的行為。

範例

下列範例會產生 C3445。

// C3445.cpp
struct A
{
    explicit A(int) {}
    A(double) {}
};

int main()
{
    A a1 = { 1 };     // error C3445: copy-list-initialization of
                      //     'A' cannot use an explicit constructor
}

若要更正錯誤,請改用直接初始化:

// C3445b.cpp
struct A
{
    explicit A(int) {}
    A(double) {}
};

int main()
{
    A a1{ 1 };
}