Я хочу сделать следующее:
func(conditionA ? pa1 : pa2, conditionB ? pb1 : pb2, conditionC ? pc1 : pc2);
В функции стиля C нет проблем. Но если func() является шаблонной функцией, компилятор сообщит об ошибках. Здесь pa1 и pa2,... относятся к разным классам и имеют метод static - "convert()". convert() также объявляется как inline из соображений производительности.
Если шаблон не может решить эту проблему, будет очень долгооооооооооооооооооооооолгото если-иначе, как показано ниже.
if (conditionA)
{
typeA1 a;
if (conditionB)
{
typeB1 b;
if (conditonC)
{
C1 c;
Function(a, b, c);
}
else
{
C2 c;
Function(a, b, c);
}
}
else
{
typeB2 b;
if (conditonC)
{
C1 c;
Function(a, b, c);
}
else
{
C2 c;
Function(a, b, c);
}
}
}
else
{
typeA2 a;
if (conditionB)
{
typeB1 b;
if (conditonC)
{
C1 c;
Function(a, b, c);
}
else
{
C2 c;
Function(a, b, c);
}
}
else
{
typeB2 b;
if (conditonC)
{
C1 c;
Function(a, b, c);
}
else
{
C2 c;
Function(a, b, c);
}
}
}