View source code
Display the source code in std/traits.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Enum member std.traits.isCallable
Detect whether T
is a callable object, which can be called with the
function call operator class="pln">LPAREN...class="pln">RPAREN
.
enum isCallable(alias callable)
= true;
Example
Functions, lambdas, and aggregate types with (static) opCall.
void f() { }
int g(int x) { return x; }
static assert( isCallable!f);
static assert( isCallable!g);
class C { int opCall(int) { return 0; } }
auto c = new C;
struct S { static int opCall(int) { return 0; } }
interface I { real value() @property; }
static assert( isCallable!c);
static assert( isCallable!(c .opCall));
static assert( isCallable!S);
static assert( isCallable!(I .value));
static assert( isCallable!((int a) { return a; }));
static assert(!isCallable!I);
Example
Templates
void f()() { }
T g(T = int)(T x) { return x; }
struct S1 { static void opCall()() { } }
struct S2 { static T opCall(T = int)(T x) {return x; } }
static assert( isCallable!f);
static assert( isCallable!g);
static assert( isCallable!S1);
static assert( isCallable!S2);
Example
Overloaded functions and function templates.
static struct Wrapper
{
void f() { }
int f(int x) { return x; }
void g()() { }
T g(T = int)(T x) { return x; }
}
static assert(isCallable!(Wrapper .f));
static assert(isCallable!(Wrapper .g));
Authors
Walter Bright,
Tomasz Stachowiak (isExpressions
),
Andrei Alexandrescu,
Shin Fujishiro,
Robert Clipsham,
David Nadlinger,
Kenji Hara,
Shoichi Kato
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.