select function by incomplete specialization