http://d.puremagic.com/issues/show_bug.cgi?id=4716
--- Comment #1 from bearophile_h...@eml.cc 2010-08-23 05:14:22 PDT --- Improved code. Both IsType() and IsString() may be useful to add to std.traits, if something similar is not already present. import std.string: chomp; import std.stdio: write, readln; import std.conv: to; // true is T is one of the successive types template IsType(T, Types...) { static if (Types.length) enum bool IsType = is(T == Types[0]) || IsType!(T, Types[1..$]); else enum bool IsType = true; } // true if T is string, wstring, or dstring template IsString(T) { enum bool IsString = IsType!(T, string, wstring, dstring); } T input(T)(string msg) { write(msg); auto read = readln(); static if (IsString!T) return to!T(read.chomp()); else return to!T(read.strip()); } // usage demo -------------- import std.stdio: writeln; void main() { //auto x = input!string("Enter value x: "); auto x = input!double("Enter value x: "); writeln(">", x, "<"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------