CPM external a c++11 optional implementation