[iso-c++] compatible template check as template template parameter

[iso-c++] compatible template check as template template parameter


Hi everyone.I have the following testcase:$ cat templatetemplate.cctemplate struct LabelTypeMap { typedef int type_t; };template struct Hold { typedef int type; };template class typeMap>struct Whatever { };template struct Now { typedef Whatever, LabelTypeMap> concrete_t; };Now::concrete_t obj;After trying to build i got this error:$icpc -DENABLE=Enable ttemplatetemplate.cc -o ./x2testtemplatetemplate.cc(12): error: class template "LabelTypeMap" is not compatible with template template parameter "typeMap"struct Now { typedef Whatever, LabelTypeMap> concrete_t; }; ^compilation aborted for templatetemplate.cc (code 2)$ icpc --versionicpc (ICC) 12.0.0 20101116Copyright (C) 1985-2010 Intel Corporation. All rights reserved.With g++ i get the following error: (notably both compilers build the sample successfully if the ENABLE is set to true)$ g++ templatetemplate.cc -o ./x2testtemplatetemplate.cc:12: error: type/value mismatch at argument 2 in template parameter list for template > class typeMap> struct Whatevertemplatetemplate.cc:12: error: expected a template of type template > class typeMap, got template struct LabelTypeMap$ g++ DENABLE=Enable templatetemplate.cc -o ./x2test templatetemplate.cc:12: error: type/value mismatch at argument 2 in template parameter list for template > class typeMap> struct Whatevertemplatetemplate.cc:12: error: expected a template of type template > class typeMap, got template struct LabelTypeMap$ g++ --version g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.So, my question is, what is the reason this code is being rejected?
1 Beitrag / 0 neu
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.