Почему эта программа выводит doubledouble, я же явно указываю int?!
struct A {
explicit A(int) {
std::cout << "int";
};
A(double) {
std::cout << "double";
};
};
int main() {
A a1 = 42;
A a2 = int(42);
}
Используя синтаксис copy initialization вы как раз явно указываете не использовать explicit конструктор. Для вызова explicit конструктора следует использовать синтаксис direct list initialization:
a1{42};
A a2{int{42}};
// выводится intint
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости