Сообщение Re[5]: почему ругается компилятор? MSVC 2010 от 03.07.2025 6:21
Изменено 03.07.2025 6:30 rg45
Re[5]: почему ругается компилятор? MSVC 2010
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я бы предпочел, чтобы это правило было менее радикальным, и одноименную функцию дочернего класса с другой сигнатурой можно было бы просто добавить к наследуемым функциям базового, не выписывая тупых переходников для базовой функции и всех ее перегрузок.
Расскажи, где ты здесь перетрудился, "выписывая тупые переходники для базовой функции и всех ее перегрузок"?
https://coliru.stacked-crooked.com/a/b9ed915d35432d10
ЕМ>Я бы предпочел, чтобы это правило было менее радикальным, и одноименную функцию дочернего класса с другой сигнатурой можно было бы просто добавить к наследуемым функциям базового, не выписывая тупых переходников для базовой функции и всех ее перегрузок.
Расскажи, где ты здесь перетрудился, "выписывая тупые переходники для базовой функции и всех ее перегрузок"?
https://coliru.stacked-crooked.com/a/b9ed915d35432d10
#include <iostream>
#include <source_location>
std::string current_function(std::source_location location = std::source_location::current()) {
return location.function_name();
}
struct Base
{
void foo() const { std::cout << current_function() << std::endl; }
void foo(int) const { std::cout << current_function() << std::endl; }
void foo(int, int) const { std::cout << current_function() << std::endl; }
void foo(int, int, int) const { std::cout << current_function() << std::endl; }
};
struct Derived : Base
{
using Base::foo;
void foo(int) const { std::cout << current_function() << std::endl; }
};
int main() {
Derived d;
d.foo();
d.foo(1); // void Derived::foo(int) const
d.foo(1, 2);
d.foo(1, 2, 3);
}
Re[5]: почему ругается компилятор? MSVC 2010
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я бы предпочел, чтобы это правило было менее радикальным, и одноименную функцию дочернего класса с другой сигнатурой можно было бы просто добавить к наследуемым функциям базового, не выписывая тупых переходников для базовой функции и всех ее перегрузок.
Расскажи, где ты здесь перетрудился, "выписывая тупые переходники для базовой функции и всех ее перегрузок"?
https://coliru.stacked-crooked.com/a/b9ed915d35432d10
Где здесь вообще какие-нибудь "переходники"?
ЕМ>Я бы предпочел, чтобы это правило было менее радикальным, и одноименную функцию дочернего класса с другой сигнатурой можно было бы просто добавить к наследуемым функциям базового, не выписывая тупых переходников для базовой функции и всех ее перегрузок.
Расскажи, где ты здесь перетрудился, "выписывая тупые переходники для базовой функции и всех ее перегрузок"?
https://coliru.stacked-crooked.com/a/b9ed915d35432d10
#include <iostream>
#include <source_location>
std::string current_function(std::source_location location = std::source_location::current()) {
return location.function_name();
}
struct Base
{
void foo() const { std::cout << current_function() << std::endl; }
void foo(int) const { std::cout << current_function() << std::endl; }
void foo(int, int) const { std::cout << current_function() << std::endl; }
void foo(int, int, int) const { std::cout << current_function() << std::endl; }
};
struct Derived : Base
{
using Base::foo;
void foo(int) const { std::cout << current_function() << std::endl; }
};
int main() {
Derived d;
d.foo();
d.foo(1); // void Derived::foo(int) const
d.foo(1, 2);
d.foo(1, 2, 3);
}
Где здесь вообще какие-нибудь "переходники"?