相关疑难解决方法(0)

使用braced-init列表调用显式构造函数:是否含糊不清?

考虑以下:

struct A {
    A(int, int) { }
};

struct B {
    B(A ) { }                   // (1)
    explicit B(int, int ) { }   // (2)
};

int main() {
    B paren({1, 2});   // (3)
    B brace{1, 2};     // (4)
}
Run Code Online (Sandbox Code Playgroud)

建设brace(4)清楚明确地调用(2).在铛,施工paren(3)明确要求(1),其中作为GCC 5.2,它失败编译:

main.cpp: In function 'int main()':
main.cpp:11:19: error: call of overloaded 'B(<brace-enclosed initializer list>)' is ambiguous
     B paren({1, 2});
                   ^
main.cpp:6:5: note: candidate: B::B(A)
     B(A ) …
Run Code Online (Sandbox Code Playgroud)

c++ gcc language-lawyer c++11

21
推荐指数
1
解决办法
906
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1

language-lawyer ×1