Некорректное поведение Intel Compiler C++
От: LeonCrew Беларусь  
Дата: 22.11.17 17:26
Оценка:
Всем привет!

Столкнулся с некорректным поведением компилятора Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.0.124 Build 20170811, платформа сборки Windows 10

Минимальный тестовый пример выдает ошибку:

Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.0.124 Build 20170811
Copyright (C) 1985-2017 Intel Corporation.  All rights reserved.

ConsoleApplication1.cpp
ConsoleApplication1.cpp(3): error: incomplete type is not allowed
  class TemplateClass : public Base
                               ^
          detected during instantiation of class "TemplateClass<Base> [with Base=SomeClass]" at line 10

compilation aborted for ConsoleApplication1.cpp (code 2)


Сам код:

template <class Base>
class TemplateClass : public Base
{
    char t;
};

class SomeClass
{
    static TemplateClass <SomeClass> StaticMember; // <---  incomplete type is not allowed
};

int main()
{
    SomeClass cls;
    return 0;
}


Код корректно собирается в VS2015/2017, xCode 9. Также проверял на ideone.com и godbolt.org.
Re: Некорректное поведение Intel Compiler C++
От: Alexander G Украина  
Дата: 23.11.17 09:51
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Всем привет!


LC>Столкнулся с некорректным поведением компилятора Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.0.124 Build 20170811, платформа сборки Windows 10


LC>Минимальный тестовый пример выдает ошибку:


Это просто к сведению, или в поиске workaround ?
Русский военный корабль идёт ко дну!
Re[2]: Некорректное поведение Intel Compiler C++
От: LeonCrew Беларусь  
Дата: 23.11.17 13:58
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Это просто к сведению, или в поиске workaround ?


Больше к workaround, но хотелось бы понять, в чем проблема у данного компилятора на платформе Windows. Т.к. у наших партнеров, который написали код, Intel Compiler C++ for Linux собирает.
В поддержке Intel этот пример точно так же запустили на linux и он собрался, сейчас мы их попросили собрать на windows и они пока молчат.
Re[3]: Некорректное поведение Intel Compiler C++
От: Alexander G Украина  
Дата: 23.11.17 14:27
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Здравствуйте, Alexander G, Вы писали:


AG>>Это просто к сведению, или в поиске workaround ?


LC>Больше к workaround,


Возможно, такое скомпилирует.
Пусть думает, что тип неполный, в объявлении метода неполные типы допускаются.

template <class Base>
class TemplateClass : public Base
{
    char t;
};

class SomeClass
{
    static TemplateClass <SomeClass>& GetStaticMember();
};


TemplateClass <SomeClass> g_SomeClass_TemplateClass_instance;


TemplateClass <SomeClass>& SomeClass::GetStaticMember()
{
   return g_SomeClass_TemplateClass_instance;
}


int main()
{
    SomeClass cls;
    return 0;
}
Русский военный корабль идёт ко дну!
Re: Некорректное поведение Intel Compiler C++
От: Alexander G Украина  
Дата: 23.11.17 14:30
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Сам код:


template <class Base>
class TemplateClass : public Base
{
    char t;
};

class SomeClass
{
    static TemplateClass <SomeClass> StaticMember; // <---  incomplete type is not allowed
};

int main()
{
    SomeClass cls;
    return 0;
}


Тут недостаёт ещё строки

TemplateClass <SomeClass> SomeClass::StaticMember;

может, с ней проблемы не будет?
Русский военный корабль идёт ко дну!
Re: Некорректное поведение Intel Compiler C++
От: Constructor  
Дата: 23.11.17 21:14
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Столкнулся с некорректным поведением компилятора Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.0.124 Build 20170811, платформа сборки Windows 10


LC>Минимальный тестовый пример выдает ошибку:


LC>...


LC>Код корректно собирается в VS2015/2017, xCode 9. Также проверял на ideone.com и godbolt.org.


Компилятор icc 18 на godbolt.org ошибок не выдает.
Re[2]: Некорректное поведение Intel Compiler C++
От: LeonCrew Беларусь  
Дата: 23.11.17 21:28
Оценка:
Здравствуйте, Constructor, Вы писали:


LC>>Код корректно собирается в VS2015/2017, xCode 9. Также проверял на ideone.com и godbolt.org.


C>Компилятор icc 18 на godbolt.org ошибок не выдает.


Весь казус в том, что у меня тоже 18 версия компилятора и у меня ошибка, как и у моих коллег! Мы все работаем на платформе windows, а наши партнеры, как и приведенный Вами сайт, работает на linux и там ошибки нету. Я уже писал об этом, и поддержка Intel так же проверила код на linux версии, но почему то не реагирует на просьбу проверить на windows.
Re[3]: Некорректное поведение Intel Compiler C++
От: XOOIOOX  
Дата: 24.11.17 07:28
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Весь казус в том, что у меня тоже 18 версия компилятора и у меня ошибка, как и у моих коллег!


Подтверждаю, на Венде в версии компилятора 18.0 ошибка есть. Попробую проапдейтиться до 18.1, может уйдет.
Re[4]: Некорректное поведение Intel Compiler C++
От: XOOIOOX  
Дата: 25.11.17 14:57
Оценка:
Здравствуйте, XOOIOOX, Вы писали:

XOO>Попробую проапдейтиться до 18.1, может уйдет.


Не ушло.
Re[5]: Некорректное поведение Intel Compiler C++
От: LeonCrew Беларусь  
Дата: 27.11.17 08:20
Оценка:
Здравствуйте, XOOIOOX, Вы писали:

XOO>Здравствуйте, XOOIOOX, Вы писали:


XOO>>Попробую проапдейтиться до 18.1, может уйдет.


XOO>Не ушло.


Есть такое. И официальная поддержка просто игнорирует данный факт.
Re[6]: Некорректное поведение Intel Compiler C++
От: XOOIOOX  
Дата: 22.03.18 21:22
Оценка:
Здравствуйте, LeonCrew, Вы писали:

LC>Есть такое.


Все, в 18.2 исправили.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.