06/10/19 16:25:42
>>133
VC2003で試したら落ちたのでアセンブリ出力を調べてみた。
function1<float, ublas::vector<float> > norm_2Functor = &ublas::norm_2<ublas::vector<float> >;
and eax,00402fd0 ; ここがおかしい。なんでANDやねん...(00402fd0はnorm_2のアドレス)
push eax ; VC8では2行あわせてpush 00402fd0だけになっている
lea ecx,dword ptr [ebp-3c]
call 00403040
mov byte ptr [ebp-04],01
で、norm_2Functorの宣言をこうしたらとりあえず動いた。
function1<float, ublas::vector<float> > norm_2Functor(&ublas::norm_2<ublas::vector<float> >);
push +00 ; この00は何なんだろう…
push 00402fd0
lea ecx,dword ptr [ebp-3c]
call 00403040
mov byte ptr [ebp-04],01
よくわからないpush 00がとても不安だけど…(VC8ではpushはひとつだけ)