Добрый вечер! Спасибо за помощь. Хотел Вас попросить помочь решить эту задачу. Вот, она сома. Реализуйте функцию array_size, которая возвращает размер массива, переданного в качестве параметра. Функция должна работать только для массивов! Т. е. если функции передать указатель, должна произойти ошибка компиляции. Примеры:
int ints[] = {1, 2, 3, 4};
int *iptr = ints;
double doubles[] = {3.14};
array_size(ints); // вернет 4
array_size(doubles); // вернет 1
array_size(iptr); // тут должна произойти ошибка компиляции
Hint: есть трюк с передачей массивов только заданного размера в функцию (передача массива по ссылке), совместите его с вашими знаниями о шаблонах.
Sample Input:
There are no tests for this task
Sample Output:
OK
#include <cstddef> // size_t
// я так понял, что здесь надо реализовать шаблонную функцию array_size,
// которая возвращает значение типа size_t.
// put your code here
Прошу Вас помочь мне с этой задачей!
Заранее блогадарю.
Compilation error
main.cpp: In function ‘int main()’:
main.cpp:17:33: error: no matching function for call to ‘array_size(int*&)’
std::cout << array_size(iptr) << std::endl; // тут должна произойти ошибка компиляции
^
main.cpp:6:13: note: candidate: template<class T, long unsigned int S> std::size_t array_size(T (&)[S])
std::size_t array_size(T (&a)[S]) {
^~~~~~~~~~
main.cpp:6:13: note: template argument deduction/substitution failed:
main.cpp:17:33: note: mismatched types ‘T [S]’ and ‘int*’
std::cout << array_size(iptr) << std::endl; // тут должна произойти ошибка компиляции
^
main.cpp: In function ‘int main()’:
main.cpp:27:5: error: redefinition of ‘int main()’
int main()
^~~~
main.cpp:10:5: note: ‘int main()’ previously defined here
Compilation error
main.cpp: In function ‘int main()’:
main.cpp:15:33: error: no matching function for call to ‘array_size(int*&)’
std::cout << array_size(iptr) << std::endl; // тут должна произойти ошибка компиляции
^
main.cpp:4:13: note: candidate: template<class T, long unsigned int S> std::size_t array_size(T (&)[S])
std::size_t array_size(T (&a)[S]) {
^~~~~~~~~~
main.cpp:4:13: note: template argument deduction/substitution failed:
main.cpp:15:33: note: mismatched types ‘T [S]’ and ‘int*’
std::cout << array_size(iptr) << std::endl; // тут должна произойти ошибка компиляции
^
main.cpp: In function ‘int main()’:
main.cpp:25:5: error: redefinition of ‘int main()’
int main()
^~~~
main.cpp:8:5: note: ‘int main()’ previously defined here
int main()