Interesting question. We can easily prove that the statement from tutorial is 
correct:
    
    
    Run

proc str: string =
    echo "str proc called" "strprocresult"
template logTwice(msg: string) =
    #let t = msg #echo t #echo t echo msg echo msg
proc main =
    logTwice(str())

main()
    
    
    $ ./t
    str proc called
    strprocresult
    str proc called
    strprocresult
    
    
    
    Run

So indeed not a plain string is passed to the template, but the passed 
expression is called inside of template. I think for typed or untyped arguments 
we may expect that, but maybe not for real data types like string? I guess one 
of the Nim devs will write some words of explanations later.

Reply via email to