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.isCopyable
Determines whether the type S
can be copied.
If a type cannot be copied, then code such as MyStruct x; auto y = x;
will fail to compile.
Copying for structs can be disabled by using @disable this(this)
.
enum isCopyable(S)
= is(typeof(()
{
S foo = S .init;
S copy = foo;
}
));
Parameters
Name | Description |
---|---|
S | The type to check. |
Returns
true
if S
can be copied. false
otherwise.
Example
struct S1 {} // Fine. Can be copied
struct S2 { this(this) {}} // Fine. Can be copied
struct S3 {@disable this(this) {}} // Not fine. Copying is disabled.
struct S4 {S3 s;} // Not fine. A field has copying disabled.
class C1 {}
static assert( isCopyable!S1);
static assert( isCopyable!S2);
static assert(!isCopyable!S3);
static assert(!isCopyable!S4);
static assert(isCopyable!C1);
static assert(isCopyable!int);
static assert(isCopyable!(int[]));
Authors
Walter Bright,
Tomasz Stachowiak (isExpressions
),
Andrei Alexandrescu,
Shin Fujishiro,
Robert Clipsham,
David Nadlinger,
Kenji Hara,
Shoichi Kato
License
Copyright © 1999-2018 by the D Language Foundation | Page generated by ddox.