Явный конструктор со всеми аргументами по умолчанию не может быть вызван из другого конструктора того же класса

Почему явный конструктор со всеми аргументами по умолчанию не может быть вызван из другого конструктора того же класса?

 #include <iostream>
 #include <string>


 class A {
 public:
   explicit A(int a = 1, int b = 2) :
     a_(a),
     b_(b) {}

   A(std::string s)
     : A() {
       std::cout << s;
   }   

   int a_;
   int b_;
 };

 int main() {
   A a("!");
   std::cout << a.a_;
 }

g++ -v

gcc версии 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

g ++ -o out -std = c ++ 11 main.cpp

Ошибка: main.cpp: 12: 13: ошибка: нет соответствующей функции для вызова ‘A :: A ()’


person Shamdor    schedule 12.12.2014    source источник
comment
Я использую g ++ версии 4.8.2   -  person Shamdor    schedule 12.12.2014
comment
Невозможно воспроизвести, то же самое с clang   -  person Borgleader    schedule 12.12.2014
comment
Прекрасно работает в g ​​++ 4.9.1   -  person Jay Miller    schedule 12.12.2014


Ответы (1)


Похоже, в 4.9.0 исправлена ​​ошибка gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58255

person Ivan Efremov    schedule 12.12.2014