Allow old style template function specialization syntax on Windows*


Reference Number : DPD200110713


Version : Intel® C++ Compiler 11.0 for Windows*; Intel Parallel Composer Beta


Operating System : Windows


Problem Description : 
See the example code below:
template<typename> void f() {}

// (1): f<int> instance is used here.
template void f<int>();

// Old-style specialization
void f<int>() {}

The line 7 shows an old style specialization. The above code can be built with Visual C++ .NET 2003 or 2005 or 2008. But the Intel C++ Compiler for Windows 11.0.066 or older, or Intel Parallel Composer beta update 3 or older gives following error:
C:testissues>icl /c /Od t.cpp
Intel® C++ Compiler Professional for applications running on IA-32, Version 11
.0    Build 20081105 Package ID: w_cproc_p_11.0.066
Copyright (C) 1985-2008 Intel Corporation.  All rights reserved.

t.cpp
t.cpp(7): error: an explicit template argument list is not allowed on this decla
ration
  void f<int>() {}
       ^

compilation aborted for t.cpp (code 2)


Resolution Status : 

This is a compatibility bug that is fixed in the 11.0.072 compiler update or newer and the next update of Intel Parallel Composer beta update3.

Directions on how to download a specific update are described at /en-us/articles/older-version-product.

[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]
For more complete information about compiler optimizations, see our Optimization Notice.