Notes from C++ static analysis

bearophile bearophileHUGS at lycos.com
Thu Jun 27 12:22:06 PDT 2013


Andrei Alexandrescu:

>> But the bottom line is I don't think we need to force anything 
>> on anybody. If anything, we could split up the internal format
>> implementation and provide format and safeFormat functions.
>>
>> format("%s %s", 1);  // no exceptions
>
> NO! This is exactly the kind of code that is buggy and useless. 
> The right use cases involve more arguments than format 
> specifiers.

Currently this code is accepted (and it prints "A B10"), but I 
think it should be not accepted (also why is it 1-based?):

import std.stdio;
void main() {
     writefln("A%2$s B%1$s", 10);
}


> The only point I'd negotiate would be to not throw with 
> positional
> arguments, and throw with sequential arguments. All code that 
> cares uses
> positional specifiers anyway.

I have opened this ER:
http://d.puremagic.com/issues/show_bug.cgi?id=10489

Bye,
bearophile


More information about the Digitalmars-d mailing list