Let\'s take the following example program:
#include
namespace half_float
{
template struct half_expr {};
struct hal
I just tried your code, and I figured out what was wrong with it.
Since you haven't implemented half::sin
and half::atan2
, the linker will throw an error anyway. So if you implement the methods half::sin
and half::atan2
, that should solve it (I implemented them by letting them return an empty half, which is, of course, meaningless).
After I took that step (providing a (meaningless) implementation of the two required methods), the error messages almost magically disappeared.
Maybe this isn't the solution to your problem, as I'm using GCC, and not VS.
EDIT: I just tried the sample I used with G++ with visual studio, which gave me a peculier error message. Provided the strangeness of the error, and the code working with GCC, I must conclude that this is a bug in VC2012.