Ошибка компиляции шаблона в Sun Studio 12

Мы переходим на Sun Studio 12.1 и с новым компилятором [ CC :Sun C++ 5.10 SunOS _sparc 2009/06/03]. Я получаю сообщение об ошибке компиляции при компиляции кода, который нормально скомпилировался с помощью более ранней версии Sun Compiler [CC :Sun WorkShop 6 update 2 C++ 5.3 2001/05/15].

Это ошибка компиляции, которую я получаю.

"Sample.cc": Error: Could not find a match for LoopThrough(int[2]) needed in main(). 1 Error(s) detected. *** Error code 1.

КОД:

#include  

#define PRINT_TRACE(STR) \
std::cout << __FILE__ << ":" << __LINE__ << ":" << STR << "\n";

template
void LoopThrough(const int(&Item)[SZ])
{
    PRINT_TRACE("Specialized version");
    for (size_t index = 0; index < SZ; ++index)
    {
        std::cout << Item[index] << "\n";
    }
}


/*     
    template
    void LoopThrough(const Type(&Item)[SZ])
    {
        PRINT_TRACE("Generic version");        
    }
 */  



int main()
{
    {
       int arr[] = { 1, 2 };
       LoopThrough(arr);    
    }
}

Если я раскомментирую код с универсальной версией, код компилируется нормально, и вызывается универсальная версия. Я не вижу этой проблемы с MSVC 2010 с отключенными расширениями и такой же случай с ideone здесь . Вызывается специализированная версия функции. Теперь вопрос в том, является ли это ошибкой в ​​компиляторе Sun?

Если да, как мы можем подать отчет об ошибке?

6
задан TemplateRex 21 July 2012 в 16:52
поделиться