#include <iostream>

using namespace std;

template <int Size, typename T>
int getArrayLength(T (&s)[Size]) {
	return Size;
}

template<int Size, typename T>
int getArrayLength(T* s) {
	return Size;
}

int main() {
	int a[100];
	int* b = new int[50];
	
	cout << getArrayLength(a) << endl; // 100 -- первая функция
	cout << getArrayLength<20>(a) << endl; // 20 -- вторая функция
	cout << getArrayLength<50>(b) << endl; // 50 -- вторая функция
	cout << getArrayLength<100>(a) << endl; // ошибка -- муки выбора
	
	return 0;
}
