c++11 backend: refactoring to support `select` on channel syntax