#include <iostream>

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

int main()
{
	typename widget::baz(); // g++ bugs
	widget::baz();
	return 0;
}
// whereas clang gives:
// clang++ -std=c++11 -O0 -Wall -Wextra -pedantic -pthread main.cpp && ./a.out
// main.cpp:11:22: error: typename specifier refers to non-type member 'baz' in 'widget'
//     typename widget::baz();
//     ~~~~~~~~~~~~~~~~~^~~
//
// main.cpp:6:17: note: referenced member 'baz' is declared here
// static void baz() { std::cout << "function\n"; }