| // (C) Copyright Beman Dawes 2008 |
| |
| // 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 more information. |
| |
| // MACRO: BOOST_NO_EXTERN_TEMPLATE |
| // TITLE: C++0x extern template unavailable |
| // DESCRIPTION: The compiler does not support C++0x extern template |
| |
| namespace boost_no_extern_template { |
| |
| template<class T, class U> void f(T const* p, U const* q) |
| { |
| p = q; |
| } |
| |
| template <class T> |
| class must_not_compile |
| { |
| public: |
| void f(T const* p, int const* q); |
| }; |
| |
| template <class T> |
| void must_not_compile<T>::f(T const* p, int const* q) |
| { |
| p = q; |
| } |
| |
| extern template void f<>(int const*, float const*); |
| extern template class must_not_compile<int>; |
| |
| int test() |
| { |
| return 0; |
| } |
| |
| } |