donot omit template
removed type-type in the default for SFINAE
updated for Mac OSX