Мы переходим на 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?
Если да, как мы можем подать отчет об ошибке?