Why ={} initialization doesn't work for tuple?

前端 未结 2 1533
醉话见心
醉话见心 2020-12-14 16:11

To me a pair is just special case of a tuple, but following surprises me:

pair p1(1, 2);   // ok
tuple

        
2条回答
  •  温柔的废话
    2020-12-14 16:24

    In addition to Praetorian's correct answer (which I've upvoted), I wanted to add a little more information...

    Post-C++14, the standard has been changed to allow:

    tuple t2={1, 2}; 
    

    to compile and have the expected semantics. The proposal that does this is N4387. This will also allow constructs such as:

    tuple
    foo()
    {
        return {1, 2};
    }
    

    It only allows it if all T in the tuple are implicitly contructible from all arguments.

    As a non-conforming extension, libc++ already implements this behavior.

提交回复
热议问题