//  Copyright (C) 2008 N. Musatti
//  Use, modification and distribution are subject to the
//  Boost Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

//  See http://www.boost.org/libs/config for most recent version.

//  MACRO:         BOOST_NO_TYPENAME_WITH_CTOR
//  TITLE:         Use of typename keyword with constructors
//  DESCRIPTION:   If the compiler rejects the typename keyword when calling
//                 the constructor of a dependent type

namespace boost_no_typename_with_ctor {

struct A {};

template <typename T>
struct B {
  typedef T type;
};

template <typename T>
typename T::type f() {
  return typename T::type();
}

int test() {
  A a = f<B<A> >();
  return 0;
}

}

