Has this been tested with all versions of GCC and Clang? I seem to recall some have problems with this in template contexts