Developer Guide and Reference

Contents

Conformance to the C/C++ Standards

The Intel® C++ Compiler conforms to the following ANSI/ISO standards:
  • C++
    ISO/IEC 14882:1998
  • C
    ISO/IEC 9899:1990
provides conformance to the ANSI/ISO standard for C language compilation (ISO/IEC 9899:1990). This standard requires that conforming C compilers accept minimum translation limits. This compiler exceeds all of the ANSI/ISO requirements for minimum translation limits.

C++ Support

The Intel® C++ Compiler supports many features in C++11. For a list of support features, see
C++ Features Supported by Intel® C++ Compiler
at http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler.
Template Instatiation
The Intel® C++ Compiler supports
extern
template, which lets you specify that a template in a specific translation unit will not be instantiated because it will be instantiated in a different translation unit or different library. The compiler now includes additional support for:
  • inline template
    – instantiates the compiler support data for the class (i.e. the
    vtable
    ) for a class without instantiating its members.
  • static template
    – instantiates the static data members of the template, but not the virtual tables or member functions.
You can now use the following options to gain more control over the point of template instantiation:
Option
Description
-fno-implicit-templates
Never emit code for non-inline templates which are instantiated implicitly (i.e. by use). only emit code for explicit instantiations.
-fno-implicit-inline-templates
Do not emit code for implicit instantiations of inline templates either. The default is to handle inlines differently so that compilations, with and without optimization, will need the same set of explicit instantiations.

C99 Support

The following C99 features are supported in this version of the Intel® C++ Compiler:
  • restricted pointers (
    restrict
    keyword).
  • variable-length Arrays
  • flexible array members
  • complex number support (
    _Complex
    keyword)
  • hexadecimal floating-point constants
  • compound literals
  • designated initializers
  • mixed declarations and code
  • macros with a variable number of arguments
  • inline functions (
    inline
    keyword)
  • boolean type (
    _Bool
    keyword)
These
long double
(128-bit representations) feature is not supported:

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804