Предыдущий пример с массивом был фиктивным, показывающий суть задачи. Но сама задача совсем другая.
Вообще идея была проверять допустимость использования первого аргумента функции со вторым.
Понимаю что сумбурно, но вот пример, надеюсь что прояснит немного ситуацию.
class PropertyContainer
{
void SetProperty(int query_id, Variant v);
template <int query_id, class T>
void SetProperty(T &prop)
{
SetProperty(Validator<query_id,T>::id, prop); // генерация ошибки времени компиляции если не специализирован Validator<query_id,T>
}
}
Вот здесь хотелось привести к обычному виду, просто потому, что QID_TIMER — по смыслу является аргументом метода.
А при такой записи, это не очевидно. Вот вобщем и все.