Здравствуйте, jazzer, Вы писали:
J>добавление конструктора в carray поможет?
По-моему, как-то не правилно понял ваш совет по добалению конструктора: приходится указывать размер массива явно ?
Поправьте, пожалуйста.
#include <iostream>
using namespace std;
template<typename T, size_t N>
struct carray
{
carray(T (&arr)[N]) : parr(arr), size(N) // добавил конструктор
{
}
T *parr;
size_t size;
};
template <size_t N>
void f1(const carray<int, N>& arr)
{
for (size_t i = 0; i < arr.size; ++i)
{
cout << arr.parr[i] << endl;
}
}
int main(int argc, char *argv[])
{
int data[] = {1, 2, 3};
....
// f1(make_carray(data));
f1(carray<int, 3>(data)); // приходиться явно указывать размер массива
f1(data); // так не компилиться, говорит - ошибка: нет соответствующей функции для вызова ‘f1(int [3])
}