Какие из объявлений класса А дадут ошибку компиляции при попытке создать его объект

struct A { const int a; };
struct A { A() : a(3) {} const int a; };
struct A { int a; };
struct A { int& a; };
struct A { A(int& b) : a(b){} int& a; };