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.
 
    