0_0_36420128_16545.cpp: In instantiation of 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get_r() [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]':
0_0_36420128_16545.cpp:33:36: required from 'constexpr const u32 LazyMontgomeryModInt<998244353u>::r'
0_0_36420128_16545.cpp:35:21: required from 'struct LazyMontgomeryModInt<998244353u>'
0_0_36420128_16545.cpp:121:22: required from here
0_0_36420128_16545.cpp:31:5: error: body of constexpr function 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get_r() [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]' not a return-statement
}
^
0_0_36420128_16545.cpp: In instantiation of 'constexpr const u32 LazyMontgomeryModInt<998244353u>::r':
0_0_36420128_16545.cpp:35:21: required from 'struct LazyMontgomeryModInt<998244353u>'
0_0_36420128_16545.cpp:121:22: required from here
0_0_36420128_16545.cpp:33:36: error: 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get_r() [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]' called in a constant expression
static constexpr u32 r = get_r();
^
0_0_36420128_16545.cpp:26:26: note: 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get_r() [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]' is not usable as a constexpr function because:
static constexpr u32 get_r()
^
0_0_36420128_16545.cpp: In instantiation of 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::reduce(const u64&) [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int; LazyMontgomeryModInt<mod>::u64 = long long unsigned int]':
0_0_36420128_16545.cpp:42:88: required from 'constexpr LazyMontgomeryModInt<mod>::LazyMontgomeryModInt(const int64_t&) [with unsigned int mod = 998244353u; int64_t = long long int]'
0_0_36420128_16545.cpp:122:50: required from here
0_0_36420128_16545.cpp:44:97: error: body of constexpr function 'static constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::reduce(const u64&) [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int; LazyMontgomeryModInt<mod>::u64 = long long unsigned int]' not a return-statement
static constexpr u32 reduce(const u64& b) { return (b + u64(u32(b) * u32(-r)) * mod) >> 32; }
^
0_0_36420128_16545.cpp: In instantiation of 'constexpr LazyMontgomeryModInt<mod>::mint& LazyMontgomeryModInt<mod>::operator*=(const mint&) const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::mint = LazyMontgomeryModInt<998244353u>]':
0_0_36420128_16545.cpp:72:72: required from 'constexpr LazyMontgomeryModInt<mod>::mint LazyMontgomeryModInt<mod>::operator*(const mint&) const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::mint = LazyMontgomeryModInt<998244353u>]'
0_0_36420128_16545.cpp:138:44: required from here
0_0_36420128_16545.cpp:60:11: error: assignment of member 'LazyMontgomeryModInt<998244353u>::a' in read-only object
a = reduce(u64(a) * b.a);
^
0_0_36420128_16545.cpp:61:17: error: invalid initialization of reference of type 'LazyMontgomeryModInt<998244353u>::mint& {aka LazyMontgomeryModInt<998244353u>&}' from expression of type 'const LazyMontgomeryModInt<998244353u>'
return *this;
^
0_0_36420128_16545.cpp:62:5: error: body of constexpr function 'constexpr LazyMontgomeryModInt<mod>::mint& LazyMontgomeryModInt<mod>::operator*=(const mint&) const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::mint = LazyMontgomeryModInt<998244353u>]' not a return-statement
}
^
0_0_36420128_16545.cpp: In instantiation of 'constexpr LazyMontgomeryModInt<mod>::mint& LazyMontgomeryModInt<mod>::operator+=(const mint&) const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::mint = LazyMontgomeryModInt<998244353u>]':
0_0_36420128_16545.cpp:138:29: required from here
0_0_36420128_16545.cpp:48:19: error: assignment of member 'LazyMontgomeryModInt<998244353u>::a' in read-only object
if (i32(a += b.a - 2 * mod) < 0) a += 2 * mod;
^
0_0_36420128_16545.cpp:48:44: error: assignment of member 'LazyMontgomeryModInt<998244353u>::a' in read-only object
if (i32(a += b.a - 2 * mod) < 0) a += 2 * mod;
^
0_0_36420128_16545.cpp:49:17: error: invalid initialization of reference of type 'LazyMontgomeryModInt<998244353u>::mint& {aka LazyMontgomeryModInt<998244353u>&}' from expression of type 'const LazyMontgomeryModInt<998244353u>'
return *this;
^
0_0_36420128_16545.cpp:50:5: error: body of constexpr function 'constexpr LazyMontgomeryModInt<mod>::mint& LazyMontgomeryModInt<mod>::operator+=(const mint&) const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::mint = LazyMontgomeryModInt<998244353u>]' not a return-statement
}
^
0_0_36420128_16545.cpp: In instantiation of 'constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get() const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]':
0_0_36420128_16545.cpp:98:72: required from 'std::ostream& operator<<(std::ostream&, const mint&)'
0_0_36420128_16545.cpp:209:35: required from here
0_0_36420128_16545.cpp:112:5: error: body of constexpr function 'constexpr LazyMontgomeryModInt<mod>::u32 LazyMontgomeryModInt<mod>::get() const [with unsigned int mod = 998244353u; LazyMontgomeryModInt<mod>::u32 = unsigned int]' not a return-statement
}
^
|