Option type implementation in C++11