For the following program:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> v = {"a", "b"};
for(int i : v)
std::cout << i << " ";
}
clang prints 97 0
. The ascii value of 'a'
is 97, but I don't fully understand the output.
On the other hand, gcc throws an exception:
terminate called after throwing an instance of 'std::length_error'
what(): cannot create std::vector larger than max_size()
so I assume it's using the 2 argument constructor that takes the size and default value, where the size is computed from the address of the string literal "a"
.
If the program is well-formed, what is the correct behavior? Here's the code.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…