pragpub functional cpp