int main() {

template<typename T>
struct A {
};
template<typename T>
struct B {
operator A<T>() {
return A<T>();//このように定義すれば問題はないが
}
operator A<T>()const;//定義を外に出すと関数定義が見つからないと出る。
};
template<typename T>
B<T>::operator A<T>() const{
return A<T>();
}
}

これやるとブロックが大きすぎますとエラーがでる