Added tup variants for gcc and clang

Added tup variants for gcc and clang. Note that gcc doesn't compile the code yet because lamdas are used in a non-standard way. This needs to be fixed