Кажется, вы хотите вызвать fun
или bar
, зависит от param
параметра foo
.Если вы используете c ++ 17, вы можете использовать if constexpr
для этого:
class Test
{
public:
template <typename T>
void foo(T param)
{
if constexpr (is_same_v<T,string> || is_same_v<T,const char*>)
fun(param);
else if (is_same_v<T,double>)
bar(param);
}
void fun(string p)
{
std::cout << "string: " << p << std::endl;
}
void bar(double p)
{
std::cout << "double: " << p << std::endl;
}
};
int main() {
Test t;
t.foo("hello");
t.foo(100.0);
return 0;
}
и int i
параметр foo
здесь не нужен, вы решаете, какой fun
/ bar
вызывается по типу param
.