Ich habe das folgende Problem. Wenn ich versuche, den folgenden Code zu kompilierenTyp Abzug funktioniert nicht
template< typename T >
T func(T t)
{
return t;
}
template< size_t N, typename T >
void foo(std::function< T(T) > func)
{
// ...
}
int main()
{
foo<3>(func<float>);
return 0;
}
ich den Fehler:
no matching function for call to 'foo'
foo<3>(func<float>);
^~~~~~
/Users/arirasch/WWU/dev/xcode/tests/tests/main.cpp:18:10: note: candidate template ignored: could not match 'function<type-parameter-0-1 (type-parameter-0-1)>' against 'float (*)(float)'
void foo(std::function< T(T) > func)
Allerdings, wenn ich es zu
behebentemplate< typename T >
T func(T t)
{
return t;
}
template< size_t N, typename T >
void foo(std::function< T(T) > func)
{
// ...
}
int main()
{
std::function< float(float) > input_func = func<float>;
foo<3>(input_func);
return 0;
}
das heißt, wenn ich erkläre die Eingabefunktion von foo
explizit wie std::function< float(float) >
, kann die Kompilierung erfolgreich durchgeführt werden.
Wer weiß, wie ich meinen Code alternativ fixe kann, so dass ich einfach so etwas wie foo<3>(func<float>);
(nach meinem ersten Codebeispiel) anstelle von
std::function< float(float) > input_func = func<float>;
foo<3>(input_func);
wo die Art der input_func
muss explizit angegeben werden schreiben kann?
Vielen Dank im Voraus.
Funktionen sind nicht 'std :: function's. –