www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - std.format.formattedRead and File.readln()

Hi,

This following code won't compile :

import std.stdio;
import std.format;

void main()
{
	auto f = File("myfile.txt", "r");
	uint life;
         formattedRead(f.readln(), "Life %s", &life); // Error 1
         formattedRead(cast(string)f.readln(), "Life %s", &life); 
// Error 1
	string str = f.readln();
         formattedRead(str, "Life %s", &life); // works
	writeln(life);			
}

Error 1 :
Error: template std.format.formattedRead does not match any 
function
template declaration

C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(502): Error: 
template std.fo
rmat.formattedRead(R,Char,S...) cannot deduce template function 
from argument ty
pes !()(string,string,uint*)

Even more weird :

import std.stdio;
import std.format;

void main()
{
	auto f = File("myfile.txt", "r");
	uint life;
         formattedRead(f.readln(), "Life %s", &life); // Error 1
	writeln(typeid(f.readln())); // Error 2 O_o			
}

However :

void main()
{
	auto f = File("myfile.txt", "r");
	writeln(typeid(f.readln())); // works fine			
}

Error 1 && 2(sorry):
mix.d(7): Error: template std.format.formattedRead does not match 
any function
template declaration
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(502): Error: 
template std.fo
rmat.formattedRead(R,Char,S...) cannot deduce template function 
from argument ty
pes !()(string,string,uint*)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(244): Error: 
template std.conv
.toImpl does not match any function template declaration
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(244): Error: 
template std.conv
.toImpl cannot deduce template function from argument types 
!(string)(ubyte)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(244): Error: 
template instance
  toImpl!(string) errors instantiating template
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(3034): Error: 
template instanc
e std.conv.to!(string).to!(ubyte) error instantiating
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(3016):        
instantiated fro
m here: 
textImpl!(string,string,void*,string,int,string,int,string,char,string,u
byte,string,ubyte,string,bool,string,bool,string,bool,string,bool,string,bool,st
ring,const(char)[],string,const(char)[],string)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(1078):        
instantiated f
rom here: 
text!(string,void*,string,int,string,int,string,char,string,ubyte,stri
ng,ubyte,string,bool,string,bool,string,bool,string,bool,string,bool,string,cons
t(char)[],string,const(char)[],string)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(392):        
instantiated fr
om here: FormatSpec!(char)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(687):        
... (1 instantia
tions, -v to show) ...
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1574):        
instantiated fr
om here: write!(TypeInfo_Array,char)
mix.d(8):        instantiated from here: writeln!(TypeInfo_Array)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(3016): Error: 
template instanc
e 
std.conv.textImpl!(string,string,void*,string,int,string,int,string,char,strin
g,ubyte,string,ubyte,string,bool,string,bool,string,bool,string,bool,string,bool
,string,const(char)[],string,const(char)[],string) error 
instantiating
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(1078):        
instantiated f
rom here: 
text!(string,void*,string,int,string,int,string,char,string,ubyte,stri
ng,ubyte,string,bool,string,bool,string,bool,string,bool,string,bool,string,cons
t(char)[],string,const(char)[],string)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(392):        
instantiated fr
om here: FormatSpec!(char)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(687):        
instantiated fro
m here: formattedWrite!(LockingTextWriter,char,TypeInfo_Array)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1574):        
instantiated fr
om here: write!(TypeInfo_Array,char)
mix.d(8):        instantiated from here: writeln!(TypeInfo_Array)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(1078): Error: 
template insta
nce 
std.conv.text!(string,void*,string,int,string,int,string,char,string,ubyte,s
tring,ubyte,string,bool,string,bool,string,bool,string,bool,string,bool,string,c
onst(char)[],string,const(char)[],string) error instantiating
C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(392):        
instantiated fr
om here: FormatSpec!(char)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(687):        
instantiated fro
m here: formattedWrite!(LockingTextWriter,char,TypeInfo_Array)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(1574):        
instantiated fr
om here: write!(TypeInfo_Array,char)
mix.d(8):        instantiated from here: writeln!(TypeInfo_Array)

Any reactions ? :D

Thanks !
Jun 02 2012