work around weird bug with visual studio 2012 by using mpl::and_ instead of &&