template <unsigned N>
class X
{
public:
int i = N;
friend X operator+( const X &a, const X &b ) noexcept
{
return { .i = a.i + b.i };
}
};
inline X<256> operator+( const X<256> &a, const X<256> &b ) noexcept;
int main()
{
S::X<256>( *ptr )( const S::X<256>&a, const S::X<256>&b ) noexcept = &::S::operator+;
std::cout << ptr( S::X<256>(), S::X<256>() ).i << '\n';
}