I have had a some problems in the past using icc/icpc with gcc 4.8 as described here. It appears that the problem has been partially fixed with the release of 14.0.2 however I am still having problems with std::bind and as a result am unable to compile code that is using a Boost library. This problem has also been reported here. I am running 64-bit Xubuntu 13.10 but that user is running openSUSE 12.3. As a test case consider the code below:
#include <vector>
#include <iostream>
#include <functional>
class Bar {
public:
void foo(double x, double y) {
std::cout << x << std::endl;
std::cout << y << std::endl;
}
void foo2(double x) {
using namespace std::placeholders;
auto function = std::bind(&Bar::foo, this, x, _1);
function(3);
}
};
int main(int argc, char **argv) {
Bar bar;
bar.foo2(3);
}Compiling with g++ main.cpp -std=c++11 works fine but with icpc main.cpp -std=c++11 I get this error:
icpc main.cpp -std=c++11
main.cpp(16): error: no instance of overloaded function "std::_Bind<_Functor (_Bound_args...)>::operator() [with _Functor=std::_Mem_fn<void (Bar::*)(double, double)>, _Bound_args=<Bar *, double, std::_Placeholder<1>>]" matches the argument list
argument types are: (int)
object type is: std::_Bind<std::_Mem_fn<void (Bar::*)(double, double)> (Bar *, double, std::_Placeholder<1>)>
function(3);
^
compilation aborted for main.cpp (code 2)
Running g++ -v gives:
Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)
The output of g++ --print-search-dirs is:
install: /usr/lib/gcc/x86_64-linux-gnu/4.8/ programs: =/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/ libraries: =/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/4.8/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/4.8/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64/:/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64/:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/:/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/:/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/
The output of icpc -# main.cpp -std=c++11 is:
/opt/intel/composer_xe_2013_sp1.2.144/bin/intel64/mcpcom
-_g
-mP3OPT_inline_alloca
-D__HONOR_STD
-D__ICC=1400
-D__INTEL_COMPILER=1400
-D__INTEL_COMPILER_UPDATE=2
-D__PTRDIFF_TYPE__=long
"-D__SIZE_TYPE__=unsigned long"
-D__WCHAR_TYPE__=int
"-D__WINT_TYPE__=unsigned int""-D__INTMAX_TYPE__=long int""-D__UINTMAX_TYPE__=long unsigned int"
-D__INTEL_CXX11_MODE__
-D__LONG_MAX__=9223372036854775807L
-D__QMSPP_
-D__OPTIMIZE__
-D__NO_MATH_INLINES
-D__NO_STRING_INLINES
-D__GNUC_GNU_INLINE__
-D__STRICT_ANSI__
-D__GXX_EXPERIMENTAL_CXX0X__
-D__GNUG__=4
-D__GNUC__=4
-D__GNUC_MINOR__=8
-D__GNUC_PATCHLEVEL__=0
-D__LP64__
-D_LP64
-D_GNU_SOURCE=1
-D__DEPRECATED=1
-D__GXX_WEAK__=1
-D__GXX_ABI_VERSION=1002
"-D__USER_LABEL_PREFIX__= "
-D__REGISTER_PREFIX__=
-D__INTEL_RTTI__
-D__EXCEPTIONS=1
-D__unix__
-D__unix
-D__linux__
-D__linux
-D__gnu_linux__
-B
"-_Asystem(unix)"
-D__ELF__
-D__x86_64
-D__x86_64__
"-_Acpu(x86_64)""-_Amachine(x86_64)"
-D_MT
-D__INTEL_COMPILER_BUILD_DATE=20140120
-D__INTEL_OFFLOAD
-D__i686
-D__i686__
-D__pentiumpro
-D__pentiumpro__
-D__pentium4
-D__pentium4__
-D__tune_pentium4__
-D__SSE2__
-D__SSE__
-D__MMX__
-_k
-_8
-_l
-_a
-_b
--gnu_version=480
-_W5
--gcc-extern-inline
-p
--bool
-tused
-x
--c++0x
--multibyte_chars
--sys_include
/opt/intel/composer_xe_2013_sp1.2.144/ipp/include
--sys_include
/opt/intel/composer_xe_2013_sp1.2.144/mkl/include
--sys_include
/opt/intel/composer_xe_2013_sp1.2.144/tbb/include
--sys_include
/opt/intel/composer_xe_2013_sp1.2.144/compiler/include/intel64
--sys_include
/opt/intel/composer_xe_2013_sp1.2.144/compiler/include
--sys_include
/usr/include/c++/4.8
--sys_include
/usr/include/c++/4.8/backward
--sys_include
/usr/local/include
--sys_include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
--sys_include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
--sys_include
/usr/include
--sys_include
/usr/include/x86_64-linux-gnu
--sys_include
/usr/include/x86_64-linux-gnu/c++/4.8
--array_section
--simd
--simd_func
--offload_mode=1
--offload_target_names=mic,MIC
--offload_unique_string=icpc118138593XjgDtQ
--bool
-mP1OPT_version=14.0-intel64
-mGLOB_diag_file=/tmp/icpcKkulxP.diag
-mP1OPT_print_version=FALSE
-mCG_use_gas_got_workaround=F
-mP2OPT_align_option_used=TRUE
-mGLOB_gcc_version=480
"-mGLOB_options_string=-# -std=c++11"
-mGLOB_cxx_limited_range=FALSE
-mCG_extend_parms=FALSE
-mGLOB_compiler_bin_directory=/opt/intel/composer_xe_2013_sp1.2.144/bin/intel64
-mGLOB_as_output_backup_file_name=/tmp/icpc5hcQGOas_.s
-mIPOPT_activate
-mIPOPT_lite
-mGLOB_em64t
-mGLOB_instruction_tuning=0x0
-mGLOB_product_id_code=0x22006d8e
-mCG_bnl_movbe=T
-mGLOB_extended_instructions=0x8
-mP3OPT_use_mspp_call_convention
-mPGOPTI_value_profile_use=T
-mP2OPT_il0_array_sections=TRUE
-mGLOB_offload_mode=1
-mP2OPT_offload_unique_var_string=icpc118138593XjgDtQ
-mP2OPT_hlo_level=2
-mP2OPT_hlo
-mP2OPT_hpo_rtt_control=0
-mIPOPT_args_in_regs=0
-mP2OPT_disam_assume_nonstd_intent_in=FALSE
-mGLOB_imf_mapping_library=/opt/intel/composer_xe_2013_sp1.2.144/bin/intel64/libiml_attr.so
-mIPOPT_obj_output_file_name=/tmp/icpcKkulxP.o
-mIPOPT_whole_archive_fixup_file_name=/tmp/icpcwarchjGt6Z3
-mGLOB_linker_version=2.23.52.20130913
-mGLOB_long_size_64
-mGLOB_routine_pointer_size_64
-mGLOB_driver_tempfile_name=/tmp/icpctempfile7JeaDy
-mP3OPT_asm_target=P3OPT_ASM_TARGET_GAS
-mGLOB_async_unwind_tables=TRUE
-mGLOB_obj_output_file=/tmp/icpcKkulxP.o
-mGLOB_source_dialect=GLOB_SOURCE_DIALECT_C_PLUS_PLUS
-mP1OPT_source_file_name=main.cpp
-mGLOB_eh_linux
main.cpp
ld
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o
--eh-frame-hdr
--build-id
-dynamic-linker
/lib64/ld-linux-x86-64.so.2
-o
a.out
-L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64
-L/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64
-L/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64
-L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64
-L/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64
-L/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4
-L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64
-L/usr/lib/gcc/x86_64-linux-gnu/4.8/
-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/
-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/
-L/lib/x86_64-linux-gnu/
-L/lib/../lib64
-L/lib/../lib/
-L/usr/lib/x86_64-linux-gnu/
-L/usr/lib/../lib/
-L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64/
-L/opt/intel/composer_xe_2013_sp1.2.144/ipp/../compiler/lib/intel64/
-L/opt/intel/composer_xe_2013_sp1.2.144/ipp/lib/intel64/
-L/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/
-L/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/intel64/gcc4.4/
-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../
-L/lib64
-L/lib/
-L/usr/lib
-L/usr/lib/i386-linux-gnu
/tmp/icpcKkulxP.o
-Bdynamic
-Bstatic
-limf
-lsvml
-lirng
-Bdynamic
-lm
-Bstatic
-lipgo
-ldecimal
--as-needed
-Bdynamic
-lcilkrts
--no-as-needed
-lstdc++
-lgcc
-lgcc_s
-Bstatic
-lirc
-lsvml
-Bdynamic
-lc
-lgcc
-lgcc_s
-Bstatic
-lirc_s
-Bdynamic
-ldl
-lc
/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
rm /tmp/icpclibgccX2vsJ5
rm /tmp/icpcgnudirsi4XLZk
rm /tmp/icpcKkulxP.o
rm /tmp/icpcdummyKovbO4.c
rm /tmp/icpcdashvZPv24j
rm /tmp/icpcgasVnZAnz
rm /tmp/icpc5hcQGOas_.s
rm /tmp/icpcldashvxw7mjj
rm /tmp/icpctempfile7JeaDy
rm /tmp/icpcarg17dlXN
rm /tmp/icpcgnudirsUrl5ex
rm /tmp/icpcgnudirssLDRzM
rm /tmp/icpcgnudirs42r8U1
rm /tmp/icpcldashvEeWTgh
rm /tmp/icpcdummykbcbDw.c
rm /tmp/icpcgccdashvFGLtZL
rm /tmp/icpcgnudirs9E9sm1
rm /tmp/icpcldashvZXBWJg
rm /tmp/icpcgnudirsCUBT7v
rm /tmp/icpcgnudirs0L0dwL
rm /tmp/icpcKkulxP.o