LINUX.ORG.RU

История изменений

Исправление 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] << ' ';
}