1

テンプレートを使用して異なるサンプル タイプ間で変換したい

template<class T,class U>
void convert(const T* source, U* dest, size_t n)
    {
    do
        {
        double G=double(max(*dest))/max(*source);
        T diff=max(*source) - min(*source);
        *dest=U(makeUnsigned(*source - min(*source))*G/makeUnsigned(diff)
              +makeUnsigned(max(*source) - *source)*double(min(*dest))/makeUnsigned(diff));

        ++dest;
        ++source;
        --n;
        }
    while(n!=0);
    }

今、自動生成されたマトリックスが欲しいので、

convert[from][to](source,dest,n);

各要素は正しいバージョンを参照しています。ここで関数ポインターをキャストする必要があることはわかっています (各要素は、とにかく同等の const void*,void* size_t を取る関数へのポインターである必要があります)。

それをしてもいいですか?

4

1 に答える 1