История изменений
Исправление www_linux_org_ru, (текущая версия) :
say<5>(a);
«5» должно выводиться, а не указываться вручную
мой пример был специально заточен под бэтти, не знающего с++ то, чтобы быть поближе к людям, пишущим си:
1. say это не шаблонная функция, и может быть заявлена как extern «C»
2. ConstArrayRef, хотя и имеет шаблонные конструкторы, по memory layout совместим с чисто сишной структурой
так что в результате этим всем можно пользоваться даже в чисто сишном проекте
если же мы согласны на шаблонную функцию say, то все пишется намного проще:
template<class T, size_t n> void say( T (& array) [n])
{
for(size_t i = 0; i < n; ++i)
std::cout << array[i] << ' ';
}
Исправление www_linux_org_ru, :
say<5>(a);
«5» должно выводиться, а не указываться вручную
мой пример был специально заточен под бэтти, не знающего с++ то, чтобы быть поближе к людям, пишущим си:
1. say это не шаблонная функция, и может быть заявлена как extern «C»
2. ConstArrayRef, хотя и имеет шаблонные конструкторы, по memory layout совместим с чисто сишной структурой
так что в результате этим всем можно пользоваться даже в чисто сишном проекте
если же мы согласны на шаблонную функцию say, то все пишется намного проще:
template<class T, size_t n> void say( T (& array) [n])
{
for(size_t i = 0; i < n; ++i)
std::cout << arg[i] << ' ';
}
Исходная версия www_linux_org_ru, :
say<5>(a);
«5» должно выводиться, а не указываться вручную
мой пример был специально заточен под бэтти, не знающего с++ то, чтобы быть поближе к людям, пишущим си:
1. say это не шаблонная функция, и может быть заявлена как extern «C»
2. ConstArrayRef, хотя и имеет шаблонные конструкторы, по memory layout совместим с чисто сишной структурой
так что в результате этим всем можно пользователься даже в чисто сишном проекте
если же мы согласны на шаблонную функцию say, то все пишется намного проще:
template<class T, size_t n> void say( T (& array) [n])
{
for(size_t i = 0; i < n; ++i)
std::cout << arg[i] << ' ';
}