¿Debería la asignación de función std :: ignorar el tipo de retorno? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Usando `std :: function <void (...)>` para llamar a una función no vacía 3 respuestas

¿El código siguiente es C ++ válido de acuerdo con el estándar C ++ 11 o C ++ 14?

#include <functional>

int ReturnInt()
{
  return 5;
}

int main( int argc, char **argv )
{
  std::function< void () > BoundType = ReturnInt;
  return 0;
}

El código se compila bien con las últimas versiones cygwin de gcc (4.8.3) y clang (4.3.2) pero no con Visual Studio 2013, Visual Studio noviembre de 2013 CTP o la vista previa de Visual Studio 14. También se compila en todas las plataformas si std :: function se cambia a boost :: function.

encontréesta otra pregunta de desbordamiento de pila que sugiere que debería funcionar.

Respuestas a la pregunta(2)

Su respuesta a la pregunta