Index: format.d
===================================================================
--- format.d	(���r�W���� 1961)
+++ format.d	(��ƃR�s�[)
@@ -298,7 +298,7 @@
 void formattedWrite(Writer, Char, A...)(Writer w, in Char[] fmt, A args)
 {
     enum len = args.length;
-    void function(Writer, const(void)*, ref FormatSpec!Char) funs[len] = void;
+    void function(Writer, const(void)*, FormatSpec!Char) funs[len] = void;
     const(void)* argsAddresses[len] = void;
     foreach (i, arg; args)
     {
@@ -821,7 +821,7 @@
 /**
    $(D void[]) is formatted like $(D ubyte[]).
  */
-void formatValue(Writer, T, Char)(Writer w, T val, ref FormatSpec!Char f)
+void formatValue(Writer, T, Char)(Writer w, T val, FormatSpec!Char f)
 if (is(const(T) == const(void[])))
 {
     put(w, cast(const ubyte[]) val);
@@ -839,7 +839,7 @@
    $(D enum) is formatted like its base value.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (is(T == enum))
 {
     static if (is(T Original == enum))
@@ -852,7 +852,7 @@
    Integrals are formatted like $(D printf) does.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isIntegral!T)
 {
     Unqual!T arg = val;
@@ -984,7 +984,7 @@
  * Floating-point values are formatted like $(D printf) does.
  */
 void formatValue(Writer, D, Char)(Writer w, D obj,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isFloatingPoint!D)
 {
     if (f.spec == 'r')
@@ -1050,7 +1050,7 @@
    "0" with integral-specific format specs.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (is(T : bool))
 {
     if (f.spec == 's') {
@@ -1065,7 +1065,7 @@
    formatted as Unicode characters with %s and as integers with
    integral-specific format specs.
  */
-void formatValue(Writer, T, Char)(Writer w, T val, ref FormatSpec!Char f)
+void formatValue(Writer, T, Char)(Writer w, T val, FormatSpec!Char f)
 if (isSomeChar!T)
 {
     if (f.spec == 's')
@@ -1082,7 +1082,7 @@
    Strings are formatted like printf does.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isSomeString!T && !isStaticArray!T)
 {
     auto s = val[0 .. f.precision < $ ? f.precision : $];
@@ -1106,7 +1106,7 @@
    Input ranges are formatted like arrays.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isInputRange!T && !isSomeChar!(ElementType!T))
 {
     auto arr = val;
@@ -1184,7 +1184,7 @@
 }
 
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isInputRange!T && !isSomeString!T && isSomeChar!(ElementType!T))
 {
     if (!f.flDash)
@@ -1227,7 +1227,7 @@
    $(D void[0]) is formatted as "[]".
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (is(D == void[0]))
 {
     put(w, seqBefore);
@@ -1238,7 +1238,7 @@
    Pointers are formatted as hex integers.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isPointer!T)
 {
     const void * p = val;
@@ -1250,7 +1250,7 @@
    Objects are formatted by calling $(D toString).
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (is(T == class))
 {
     if (val is null) put(w, "null");
@@ -1262,7 +1262,7 @@
    separators.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (isAssociativeArray!T)
 {
     bool firstTime = true;
@@ -1281,7 +1281,7 @@
    separators.
  */
 void formatValue(Writer, T, Char)(Writer w, T val,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 if (is(T == struct) && !isInputRange!T)
 {
     static if (is(typeof(val.toString() == string)))
@@ -1297,7 +1297,7 @@
 /**
    Static-size arrays are formatted just like arrays.
  */
-void formatValue(Writer, T, Char)(Writer w, ref T val, ref FormatSpec!Char f)
+void formatValue(Writer, T, Char)(Writer w, ref T val, FormatSpec!Char f)
 if (isStaticArray!T)
 {
     formatValue(w, val[], f);
@@ -1306,7 +1306,7 @@
 /*
    Formatting a $(D creal) is deprecated but still kept around for a while.
  */
-void formatValue(Writer, T, Char)(Writer w, T val, ref FormatSpec!Char f)
+void formatValue(Writer, T, Char)(Writer w, T val, FormatSpec!Char f)
 if (is(T : creal))
 {
     formatValue(w, val.re, f);
@@ -1326,7 +1326,7 @@
 /*
    Formatting an $(D ireal) is deprecated but still kept around for a while.
  */
-void formatValue(Writer, T, Char)(Writer w, T val, ref FormatSpec!Char f)
+void formatValue(Writer, T, Char)(Writer w, T val, FormatSpec!Char f)
 if (is(T : ireal))
 {
     formatValue(w, val.im, f);
@@ -1345,7 +1345,7 @@
    Formatting a $(D typedef) is deprecated but still kept around for a while.
  */
 deprecated void formatValue(Writer, T, Char)
-(Writer w, T val, ref FormatSpec!Char f)
+(Writer w, T val, FormatSpec!Char f)
 if (is(T == typedef))
 {
     static if (is(T U == typedef)) {
@@ -1368,7 +1368,7 @@
   address.
  */
 private void formatGeneric(Writer, D, Char)(Writer w, const(void)* arg,
-        ref FormatSpec!Char f)
+        FormatSpec!Char f)
 {
     formatValue(w, *cast(D*) arg, f);
 }
@@ -1966,7 +1966,7 @@
 }
 
 //------------------------------------------------------------------------------
-private void skipData(Range, Char)(ref Range input, ref FormatSpec!Char spec)
+private void skipData(Range, Char)(ref Range input, FormatSpec!Char spec)
 {
     switch (spec.spec)
     {
@@ -1986,7 +1986,7 @@
 /**
    Reads an array (except for string types) and returns it.
  */
-T unformatValue(T, Range, Char)(ref Range input, ref FormatSpec!Char spec)
+T unformatValue(T, Range, Char)(ref Range input, FormatSpec!Char spec)
     if (isArray!T && !isSomeString!T)
 {
     auto app = appender!T();
@@ -2005,7 +2005,7 @@
 /**
    Reads a string and returns it.
  */
-T unformatValue(T, Range, Char)(ref Range input, ref FormatSpec!Char spec)
+T unformatValue(T, Range, Char)(ref Range input, FormatSpec!Char spec)
 if (isInputRange!Range && isSomeString!T)
 {
     auto app = appender!T();
@@ -2051,7 +2051,7 @@
 /**
    Reads an integral value and returns it.
  */
-T unformatValue(T, Range, Char)(ref Range input, ref FormatSpec!Char spec)
+T unformatValue(T, Range, Char)(ref Range input, FormatSpec!Char spec)
 if (isIntegral!T && isInputRange!Range)
 {
     enforce(std.algorithm.find("cdosuxX", spec.spec).length,
@@ -2066,7 +2066,7 @@
 /**
    Reads a floating-point value and returns it.
  */
-T unformatValue(T, Range, Char)(ref Range input, ref FormatSpec!Char spec)
+T unformatValue(T, Range, Char)(ref Range input, FormatSpec!Char spec)
 if (isFloatingPoint!T)
 {
     if (spec.spec == 'r')
