#include <iostream>
#include <string>
using namespace std;
class A{
};
int main() {
// string::string(charT const* s)
string s1("12345");
// 5 - because constructor takes into account null-terminated character
cout << s1.size() << endl;
// string(std::initializer_list<charT> ilist)
string s2({'1','2','3','4','5'});
// 5 - because string is built from the contents of the initializer list init.
cout << s2.size()<<endl;
// string::string(charT const* s, size_type count)
string s3("12345",3);
// 3 - Constructs the string with the first count characters of character string pointed to by s
cout << s3.size() << endl;
// basic_string( std::initializer_list<CharT> init,const Allocator& alloc = Allocator() ); - ?
string s4({'1','2','3','4','5'},3);
// 2 - why this compiles (with no warning) and what this result means?
cout << s4.size() << endl;
string s5({'1','2','3','4','5'},5);
// 0 - why this compiles (with no warning) and what this result means?
cout << s5.size() << endl;
// basic_string( std::initializer_list<CharT> init,const Allocator& alloc = Allocator() );
// doesn't compile, no known conversion for argument 2 from 'A' to 'const std::allocator<char>&'
//string s6({'1','2','3','4','5'},A());
//cout << s6.size() << endl;
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxzdHJpbmc+CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgIGNsYXNzIEF7CiAgICB9OwoKICAgIGludCBtYWluKCkgewoKCSAgICAvLyBzdHJpbmc6OnN0cmluZyhjaGFyVCBjb25zdCogcykKCSAgICBzdHJpbmcgczEoIjEyMzQ1Iik7CgkgICAgLy8gNSAtIGJlY2F1c2UgY29uc3RydWN0b3IgdGFrZXMgaW50byBhY2NvdW50IG51bGwtdGVybWluYXRlZCBjaGFyYWN0ZXIKCSAgICBjb3V0IDw8IHMxLnNpemUoKSA8PCBlbmRsOwkJCgkKCSAgICAvLyBzdHJpbmcoc3RkOjppbml0aWFsaXplcl9saXN0PGNoYXJUPiBpbGlzdCkKCSAgICBzdHJpbmcgczIoeycxJywnMicsJzMnLCc0JywnNSd9KTsJCgkgICAgLy8gNSAtIGJlY2F1c2Ugc3RyaW5nIGlzIGJ1aWx0IGZyb20gdGhlIGNvbnRlbnRzIG9mIHRoZSBpbml0aWFsaXplciBsaXN0IGluaXQuIAkKCSAgICBjb3V0IDw8IHMyLnNpemUoKTw8ZW5kbDsKCQogICAgICAgIC8vIHN0cmluZzo6c3RyaW5nKGNoYXJUIGNvbnN0KiBzLCBzaXplX3R5cGUgY291bnQpCgkgICAgc3RyaW5nIHMzKCIxMjM0NSIsMyk7CiAgICAgICAgLy8gMyAtICBDb25zdHJ1Y3RzIHRoZSBzdHJpbmcgd2l0aCB0aGUgZmlyc3QgY291bnQgY2hhcmFjdGVycyBvZiBjaGFyYWN0ZXIgc3RyaW5nIHBvaW50ZWQgdG8gYnkgcwoJICAgIGNvdXQgPDwgczMuc2l6ZSgpIDw8IGVuZGw7CgoJICAgIC8vIGJhc2ljX3N0cmluZyggc3RkOjppbml0aWFsaXplcl9saXN0PENoYXJUPiBpbml0LGNvbnN0IEFsbG9jYXRvciYgYWxsb2MgPSBBbGxvY2F0b3IoKSApOyAtID8KCSAgICBzdHJpbmcgczQoeycxJywnMicsJzMnLCc0JywnNSd9LDMpOwoJICAgIC8vIDIgLSB3aHkgdGhpcyBjb21waWxlcyAod2l0aCBubyB3YXJuaW5nKSBhbmQgd2hhdCB0aGlzIHJlc3VsdCBtZWFucz8KCSAgICBjb3V0IDw8IHM0LnNpemUoKSA8PCBlbmRsOwoJCgkKCQoJICAgIHN0cmluZyBzNSh7JzEnLCcyJywnMycsJzQnLCc1J30sNSk7CgkgICAgLy8gMCAtIHdoeSB0aGlzIGNvbXBpbGVzICh3aXRoIG5vIHdhcm5pbmcpIGFuZCB3aGF0IHRoaXMgcmVzdWx0IG1lYW5zPwoJICAgIGNvdXQgPDwgczUuc2l6ZSgpIDw8IGVuZGw7CgkKCSAgICAvLyBiYXNpY19zdHJpbmcoIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDaGFyVD4gaW5pdCxjb25zdCBBbGxvY2F0b3ImIGFsbG9jID0gQWxsb2NhdG9yKCkgKTsKCSAgICAvLyBkb2Vzbid0IGNvbXBpbGUsIG5vIGtub3duIGNvbnZlcnNpb24gZm9yIGFyZ3VtZW50IDIgZnJvbSAnQScgdG8gJ2NvbnN0IHN0ZDo6YWxsb2NhdG9yPGNoYXI+JicKCSAgICAvL3N0cmluZyBzNih7JzEnLCcyJywnMycsJzQnLCc1J30sQSgpKTsKCSAgICAvL2NvdXQgPDwgczYuc2l6ZSgpIDw8IGVuZGw7CgoJICAgIHJldHVybiAwOwogICAgfQ==