根据参数大小在编译时选择函数

use*_*112 -2 c++

有没有办法生成代码(在编译时),看起来有点像:

T Func(T t){
    if (sizeof(t) == 2){
        return X(t);
    }
    else if( sizeof(t) == 4){
        return Y(t);
    }
}
Run Code Online (Sandbox Code Playgroud)

(其中T是int32或int16)

所以在运行时我可以打电话:

Func(_myInt)
Run Code Online (Sandbox Code Playgroud)

代码将编译为任何一个X(_myInt)Y(_myInt).

Ser*_*eyA 7

是.

X Func(int32_t t) {
    return X(t);
}

Y Func(int16_t t) {
    return Y(t);
}
Run Code Online (Sandbox Code Playgroud)