В c ++ я могу создавать и инициализировать переменные несколькими способами:
int x = 0;
int x(0);
int x = int(0);
int x = int(); // same as zero
, но, например, при объявлении таких типов данных, не являющихся примитивными, есть какая-то ошибка.
string s = "";
string s("");
string s = string("");
string s = string(); // gives an error
В чем различия между этими типами инициализации и почему последний тип работает для int, а не для string?