привет!
есть такой код:
template<typename D>
struct crtp {
void cwd() {}
};
struct type: crtp<type> {
//void cwd(int) {}
};
int main()
{
type t;
t.cwd();
}
если раскомментить закомментированную строку, получим ошибку:
prog.cc:16:11: error: no matching function for call to 'type::cwd()'
16 | t.cwd();
| ^
prog.cc:10:10: note: candidate: 'void type::cwd(int)'
10 | void cwd(int) {}
| ^~~
prog.cc:10:10: note: candidate expects 1 argument, 0 provided
почему так? почему компилятор не видит вариант метода из базового класса, если я определяю перегрузку с другой сигнатурой в наследнике?
спасибо!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)