here and elsewhere  the c trick requires you to write  std  enable if t with emphasis on the  t  it s a type alias for the type member of what you have written here failing to do that will mean sfinae will silently allow invalid conversions  aside  might not be the worst idea to static asserts using std  is constructible  or no compile tests  for some conversions you expect to be invalid 