Здравствуйте, Sergey J. A., Вы писали:
SJA>Заметил что коллега использует таги в своём коде:
SJA>SJA>VariantWrp var1;
SJA>VariantWrp var2(vtSource);
SJA>VariantWrp var3(no_copy, vtSource);
SJA>
SJA>Я вижу такую альтернативу:
SJA>SJA>VariantWrp var1;
SJA>VariantWrp var2(vtSource);
SJA>VariantWrp var3(vtSource, false);
SJA>
SJA>Какой случай когда лучше применять ?
void f(/*неважно*/, bool flag)
{
// много кода…
// очень много кода…
// общего для обоих случаев кода…
if (flag) /*частный случай 1*/; else /*частный случай 2*/;
// ещё очень много кода…
}
void g(/*пофигу*/)
{
// много кода для частного случая 1
}
void g(tag_t, /*пофигу*/)
{
// много другого кода для случая 2
// который совсем не похож на код случая 1
}
Опять же, overload разрешится при компиляции, а флаг — только в рантайме.