diff --git a/source/source_lcao/module_ri/conv_coulomb_pot_k.h b/source/source_lcao/module_ri/conv_coulomb_pot_k.h index 5534160a0a5..bae445b6070 100644 --- a/source/source_lcao/module_ri/conv_coulomb_pot_k.h +++ b/source/source_lcao/module_ri/conv_coulomb_pot_k.h @@ -3,14 +3,22 @@ #include "source_hamilt/module_xc/coulomb_config.h" +#include + namespace Conv_Coulomb_Pot_K { - template extern T cal_orbs_ccp( + // Constrains the scalar cal_orbs_ccp/cal_orbs_ccp_spencer overloads below: + // icpc cannot order them against the recursive std::vector overloads and + // reports an ambiguity, so the scalar overload is disabled for vectors. + template struct is_std_vector : std::false_type {}; + template struct is_std_vector> : std::true_type {}; + + template extern typename std::enable_if::value, T>::type cal_orbs_ccp( const T &orbs, const CoulombParam &coulomb_param, const double rmesh_times); - template extern T cal_orbs_ccp_spencer( + template extern typename std::enable_if::value, T>::type cal_orbs_ccp_spencer( const T &orbs, const CoulombParam &coulomb_param, const double rmesh_times);