2014-12-12 6 views
0

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

#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_; 
} 

г ++ -v

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

г ++ -o из -std = C++ 11 main.cpp

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

+0

Я использую g ++ версию 4.8.2 – Shamdor

+0

[Невозможно воспроизвести] (http://coliru.stacked-crooked.com/a/a30ffe7de0fbb737), [то же самое с clang] (http://coliru.stacked-crooked.com/ a/94158d1858fecd3f) – Borgleader

+0

Работает отлично в g ++ 4.9.1 –

ответ