template<class T>
struct container
{
container(T t) {}
template<class Iter>
container(Iter beg, Iter end);
};
template<class Iter>
container(Iter b, Iter e) -> container<typename std::iterator_traits<Iter>::value_type>;
container c(7);
std::vector<double> v = {};
auto d = container(v.begin(), v.end());
container e{5, 6};
template<class T>
struct A
{
explicit A(const T&, ...) noexcept;
A(T&&, ...);
};
int i;
A a1 = {i, i};
A a2{i, i};
A a3{0, i};
A a4 = {0, i};
template<class T>
A(const T&, const T&) -> A<T&>;
template<class T>
explicit A(T&&, T&&) -> A<T>;
A a5 = {0, 1};
A a6{0, 1};
A a7 = {0, i};
A a8{0, i};
template<class T>
struct B
{
template<class U>
using TA = T;
template<class U>
B(U, TA<U>);
};
B b{(int*)0, (char*)0};