#include <iostream>

struct widget
{
	struct baz { explicit baz() { std::cout << "constructor\n"; } };
	static void baz() { std::cout << "function\n"; }
};

template<class B>
void foo() { typename B::baz(); }

template<class B>
void bar() { B::baz(); }

int main()
{
	foo<widget>();
	bar<widget>();
}