template <int I> void div(char (*)[I % 2 == 0] = 0) {

// invoked if I is an even number

}


template <int I> void div(char (*)[I % 2 == 1] = 0) {

// invoked if I is an odd number

}


div<3>(0), div<4>(0) 이렇게 쓰면 각자 다른 템플릿이 호출되는데 그 이유가 진짜 감이 하나도 안 옴..