#include <iostream>
using namespace std;

template <typename T> struct Foo{};

template <typename S> struct Bar
{
	template <typename T> operator Foo<T>() { return Foo<T>{}; }
};

class Baz
{
public:
  Baz(const Foo<int>&){}
};

int main()
{
  Bar<float> bar;
  Baz        baz(bar); // works fine
}