rt,我正在整理模板。
我写了一个 ModInt 的 struct,就是取模整数。
它是这样的:
struct ModInt
{
ll val;
ModInt(ll v=0){val=v%MOD;}
...
};
但是我写其他 struct 的时候,如果我想把它写成模板类,比如 Frac 分数类:
template<typename T>
struct Frac
{
T fz,fm;
...
double Val(){return (double)fz/fm;}
...
}
那么,如果我写 Frac<ModInt>,就会 CE,这是因为 ModInt 没法转成 double。
但是我发现 ll(long long)能转成 ModInt,这是因为 ModInt 有一个构造函数。
所以如何写出 ModInt 到 ll 和 double 的构造函数?或者说如何才能让 Frac<ModInt> 不 CE?