rewrite concept checking code to make more robust and avoid a gcc bug, tests once again compile and pass on gcc-4.8.2