Hello. I’m trying to build engine with Intel Compiler, but I only get tons of errors. It seems like there are problems with decltype and templates.
E.g. Engine\Source\Runtime\Analytics\Analytics\Public\AnalyticsConversion.h
// I'm not sure why decltype is used here in the first place,
// as return type is always expected to be FString
template <typename T>
inline auto ToString(const T& Value) -> decltype(Lex::ToString(Value))
The compiler is not able to define return type correctly and this results in multiple errors like:
no instance of overloaded function "AnalyticsConversion::ToString" matches the argument list
. Though the message is quite missleading, replacing decltype with FString resolves the problem. And there are more code with this decltype issue.
Another thing are templates. VC++ compiles the following code without problems while ICC is not able to compile it:
template <class Base>
class B : public Base
{};
class A
{
static B<A> StaticMember; // D'OH! ICC: incomplete type is not allowed
};
So the problem happens with FImagePlateEditorStyle (static TOptional Singleton), FMaterialMeshVertexBuffer (static TGlobalResource DummyMeshRendererVertexBuffer)
to name a few
Does anybody have an idea what’s going on with ICC build? Have anyone built UE with ICC?