View source code
Display the source code in std/range/package.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.range.isSomeFiniteCharInputRange
This simplifies a commonly used idiom in phobos for accepting any kind of string
parameter. The type R
can for example be a simple string, chained string using
std
, chainPath
or any other input range of
characters.
enum isSomeFiniteCharInputRange(R)
= isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R);
Only finite length character ranges are allowed with this constraint.
This template is equivalent to:
isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R)
See Also
isInputRange
,
isInfinite
,
isSomeChar
,
ElementEncodingType
Example
import std .path : chainPath;
import std .range : chain;
void someLibraryMethod(R)(R argument)
if (isSomeFiniteCharInputRange!R)
{
// implementation detail, would iterate over each character of argument
}
someLibraryMethod("simple strings work");
someLibraryMethod(chain("chained", " ", "strings", " ", "work"));
someLibraryMethod(chainPath("chained", "paths", "work"));
// you can also use custom structs implementing a char range
Authors
Andrei Alexandrescu, David Simcha, Jonathan M Davis, and Jack Stouffer. Credit for some of the ideas in building this module goes to Leonardo Maffi.
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.