二項演算子をクラス内でオーバーロードしたテンプレートクラスをテンプレート関数で返してdecltype内で演算すると C2677 エラーが起きて最高に意味不明
template<class> struct rhs { friend int operator*(int x, rhs){ return 2; } }; template<class T> rhs<T> make(T){ return rhs<T>(); } using R = decltype(42 * make(42)); int main(){}
=>C2677エラー!!
最高に意味不明
対処法はrhs内でoperator*をオーバーロードせず外部で定義すればよい
色々と試したところ
最高に意味不明