#include <iostream>
template <int V>
void div(char(*)[V - 1] = 0)
{
std::cout << "-1" << std::endl;
}
template <int V>
void div(char(*)[V - 2] = 0)
{
std::cout << "-2" << std::endl;
}
template <int V>
void div(char(*)[V - 3] = 0)
{
std::cout << "-3" << std::endl;
}
int main()
{
div<3>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGludCBWPgp2b2lkIGRpdihjaGFyKCopW1YgLSAxXSA9IDApCnsKICAgIHN0ZDo6Y291dCA8PCAiLTEiIDw8IHN0ZDo6ZW5kbDsKfQp0ZW1wbGF0ZSA8aW50IFY+CnZvaWQgZGl2KGNoYXIoKilbViAtIDJdID0gMCkKewogICAgc3RkOjpjb3V0IDw8ICItMiIgPDwgc3RkOjplbmRsOwp9CnRlbXBsYXRlIDxpbnQgVj4Kdm9pZCBkaXYoY2hhcigqKVtWIC0gM10gPSAwKQp7CiAgICBzdGQ6OmNvdXQgPDwgIi0zIiA8PCBzdGQ6OmVuZGw7Cn0KIAppbnQgbWFpbigpCnsKICAgIGRpdjwzPigpOwp9
prog.cpp: In function 'int main()':
prog.cpp:21:12: error: call of overloaded 'div()' is ambiguous
div<3>();
^
prog.cpp:4:6: note: candidate: void div(char (*)[(V - 1)]) [with int V = 3]
void div(char(*)[V - 1] = 0)
^
prog.cpp:9:6: note: candidate: void div(char (*)[(V - 2)]) [with int V = 3]
void div(char(*)[V - 2] = 0)
^