さて、私はこのような機能を持っているとしましょう
template <typename T>
void Func(std::vector<T> x, T alpha = 1)
{
// ... do stuff
}
このような複合型で使いたいです
std::vector<std::complex<double>> x;
Func(x, 5.5);
次に、コンパイラーは(VS2010)それがtemplate parameter 'T' is ambiguous
理由でそれを文句を言いcould be 'double' or 'std::complex<double>'
ます。明らかな修正、このように呼んでください
Func(x, std::complex<double>(5.5));
しかし、それは、私は望んでいません。なぜ自動的に複合型に変換できないのですか?