diff options
Diffstat (limited to 'src/boost/libs/utility/identity_type/test/abstract.cpp')
-rw-r--r-- | src/boost/libs/utility/identity_type/test/abstract.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/boost/libs/utility/identity_type/test/abstract.cpp b/src/boost/libs/utility/identity_type/test/abstract.cpp new file mode 100644 index 000000000..39b10c35a --- /dev/null +++ b/src/boost/libs/utility/identity_type/test/abstract.cpp @@ -0,0 +1,35 @@ + +// Copyright (C) 2009-2012 Lorenzo Caminiti +// Distributed under the Boost Software License, Version 1.0 +// (see accompanying file LICENSE_1_0.txt or a copy at +// http://www.boost.org/LICENSE_1_0.txt) +// Home at http://www.boost.org/libs/utility/identity_type + +#include <boost/utility/identity_type.hpp> +#include <boost/static_assert.hpp> +#include <boost/type_traits/add_reference.hpp> +#include <boost/type_traits/remove_reference.hpp> + +//[abstract +#define TMP_ASSERT(metafunction) \ + BOOST_STATIC_ASSERT(metafunction::value) + +template<typename T, bool b> +struct abstract { + static const bool value = b; + virtual void f(T const& x) = 0; // Pure virtual function. +}; + +TMP_ASSERT( + boost::remove_reference< // Add and remove + BOOST_IDENTITY_TYPE(( // reference for + boost::add_reference< // abstract type. + abstract<int, true> + >::type + )) + >::type +); +//] + +int main() { return 0; } + |