Compiler projects using llvm
// RUN: %clang_cc1 -std=c++1z -verify %s

template<typename T> struct A { constexpr A(int = 0) {} };
A() -> A<int>;
A(int) -> A<char>;

static constexpr inline const volatile A a = {}; // ok, specifiers are permitted
A b;
A c [[]] {};

A d = {}, e = {};
A f(0), g{}; // expected-error {{template arguments deduced as 'A<char>' in declaration of 'f' and deduced as 'A<int>' in declaration of 'g'}}

struct B {
  static A a; // expected-error {{requires an initializer}}
};
extern A x; // expected-error {{requires an initializer}}
static A y;