On Friday, 30 June 2017 at 04:51:23 UTC, vit wrote:
import std.traits : isCallable;
auto foo(alias F, T)(T x)
if(isCallable!F)//this line is optional
{
return F(x);
}
Thanks. That works.
On Thursday, 29 June 2017 at 06:40:04 UTC, Balagopal Komarath
wrote:
On Wednesday, 28 June 2017 at 12:19:31 UTC, vit wrote:
auto foo(alias F, T)(T x)
{
return x.foo(&F);
}
With this definition foo!((x) => x+1)(3); doesn't work. Is
there a way to solve this?
You donĀ“t need overload templ
On Wednesday, 28 June 2017 at 12:19:31 UTC, vit wrote:
auto foo(alias F, T)(T x)
{
return x.foo(&F);
}
With this definition foo!((x) => x+1)(3); doesn't work. Is there
a way to solve this?
On Wednesday, 28 June 2017 at 11:49:57 UTC, Balagopal Komarath
wrote:
Shouldn't the compiler be able to resolve foo!g(3) to the first
template foo?
import std.stdio;
import std.algorithm;
import std.range;
auto foo(F, T)(T x)
{
return x.foo(F);
}
auto foo(F, T)(T x, F f)
{
return f(x)
Shouldn't the compiler be able to resolve foo!g(3) to the first
template foo?
import std.stdio;
import std.algorithm;
import std.range;
auto foo(F, T)(T x)
{
return x.foo(F);
}
auto foo(F, T)(T x, F f)
{
return f(x);
}
int g(int x) { return x; }
void main()
{
foo(3, &g); // 2nd f