The string, error, throw and syslog functions can be free functions or members.

NONMEMBER — the default

Declared in the header, defined in the source.

MEMBER OF Class

$STRING NONCONST MEMBER OF Reporter
$STRING PREFIX say

mstring defines std::string Reporter::sayReport( … ) in the source; you declare it in your class, with the same signature, and $INCLUDE the class's header:

class Reporter
{
  public:
    std::string sayReport( std::string const &what, std::locale const &loc );
    std::string sayReport( std::string const &what );
};

The definition is written inside the $NAMESPACE, so the class must be declared in it (or in a namespace nested in it). CONST (the default) makes the member const.

MEMBER AS name

$STREAMABLE ENABLE NOPOSTFIX
$STRING MEMBER AS text NOPOSTFIX
$MESSAGE Point
@ x int
@ y int
"({$x}, {$y})"
Point p( 3, 4 );
std::string s = p.text( );          // "(3, 4)"

The function is declared and defined as a member of the message's streamable class and uses the stored values, so it takes no parameters (only loc in the locale overload). It needs $STREAMABLE ENABLE for that message — otherwise an error. The prefix and postfix still apply to name.