Просто общее любопытство c ++:
Этот код ниже не должен компилироваться, потому что невозможно знать, какой экземпляр создать: temp (const int &) или temp (const string &) при вызове func (temp) - эту часть я знаю.
Что я хотел бы знать, так это то, что я могу что-то сделать для строки, помеченной PASSINGLINE , чтобы заставить компилятор сделать вывод, что я хочу, чтобы FPTR1 вызывался, а не FPTR2 ?
#include<iostream>
using std::cout;
using std::endl;
/*FPTR1*/ void func(void(*fptr)(const int&)){ fptr(1001001);}
/*FPTR2*/ void func(void(*fptr)(const string&)){ fptr("1001001"); }
template <typename T>
void temp(const T &t){ cout << t << endl; }
int main(){
/*PASSINGLINE*/ func(temp);
return 0;
}
Спасибо.