Semantics of local PROGMEM
I tested with 100 chars string 

const char*

Sketch uses 1566 bytes
Global variables use 288 bytes


with F macro

Sketch uses 1594 bytes
Global variables use 188 bytes


progstr &lt;101> ps(...

Sketch uses 1618 bytes 
Global variables use 288 bytes


const char* ps = pstr("...

Sketch uses 1502 bytes 
Global variables use 188 bytes


the pstr version string has errors at the end, when printed.

sorry, the pstr function works only if previous sketch version put the string into flash memory. it is not in hex file.