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()'
Я использую g ++ версию 4.8.2 – Shamdor
[Невозможно воспроизвести] (http://coliru.stacked-crooked.com/a/a30ffe7de0fbb737), [то же самое с clang] (http://coliru.stacked-crooked.com/ a/94158d1858fecd3f) – Borgleader
Работает отлично в g ++ 4.9.1 –