summaryrefslogtreecommitdiff
path: root/ACE/tests/Compiler_Features_24_Test.cpp
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2014-09-08 12:36:30 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2014-09-08 12:36:30 +0000
commitdc8fefdf60b94b3133d7c3820920a1ff78325072 (patch)
treed4bcdc7afde0a20b1dea49060baf43fd04e8d616 /ACE/tests/Compiler_Features_24_Test.cpp
parent4356d0712856c7a3962027da9660a12cfdf7ee0d (diff)
downloadATCD-dc8fefdf60b94b3133d7c3820920a1ff78325072.tar.gz
Mon Sep 8 12:38:47 UTC 2014 Johnny Willemsen <jwillemsen@remedy.nl>
* tests/Compiler_Features_24_Test.cpp: Extended this unit test
Diffstat (limited to 'ACE/tests/Compiler_Features_24_Test.cpp')
-rw-r--r--ACE/tests/Compiler_Features_24_Test.cpp109
1 files changed, 56 insertions, 53 deletions
diff --git a/ACE/tests/Compiler_Features_24_Test.cpp b/ACE/tests/Compiler_Features_24_Test.cpp
index 9043e26a4b0..fa9c121db93 100644
--- a/ACE/tests/Compiler_Features_24_Test.cpp
+++ b/ACE/tests/Compiler_Features_24_Test.cpp
@@ -12,59 +12,62 @@
#include <type_traits>
#include <memory>
-template <typename T>
-class o_r;
-
-template <typename T>
-struct o_t
-{
- typedef o_r<T> ref_type;
-};
-class T_base {};
-
-template<typename T,
- typename = typename std::enable_if<
- std::is_base_of<T_base, T>::value>::type, typename ...Args>
-o_r<T> make_f(Args&& ...args);
-
-template <typename T>
-class o_r final
-{
-public:
- template <typename _Tp1, typename, typename ...Args>
- friend o_r<_Tp1> make_f(Args&& ...args);
-protected:
- typedef std::shared_ptr<T> shared_ptr_type;
- template<typename _Tp1, typename = typename
- std::enable_if<std::is_convertible<_Tp1*, T*>::value>::type>
- explicit o_r (_Tp1*)
- : stub_ ()
- {}
-private:
- shared_ptr_type stub_;
-};
-
-template<typename T, typename, typename ...Args>
-inline o_r<T> make_f(Args&& ...args)
+namespace FOO
{
- return o_r<T> (new T (std::forward<Args> (args)...));
+ template <typename T>
+ class o_r;
+
+ template <typename T>
+ struct o_t
+ {
+ typedef o_r<T> ref_type;
+ };
+ class T_base {};
+
+ template<typename T,
+ typename = typename std::enable_if<
+ std::is_base_of<T_base, T>::value>::type, typename ...Args>
+ o_r<T> make_f(Args&& ...args);
+
+ template <typename T>
+ class o_r final
+ {
+ public:
+ template <typename _Tp1, typename, typename ...Args>
+ friend o_r<_Tp1> make_f(Args&& ...args);
+ protected:
+ typedef std::shared_ptr<T> shared_ptr_type;
+ template<typename _Tp1, typename = typename
+ std::enable_if<std::is_convertible<_Tp1*, T*>::value>::type>
+ explicit o_r (_Tp1*)
+ : stub_ ()
+ {}
+ private:
+ shared_ptr_type stub_;
+ };
+
+ template<typename T, typename, typename ...Args>
+ inline o_r<T> make_f(Args&& ...args)
+ {
+ return o_r<T> (new T (std::forward<Args> (args)...));
+ }
+
+ class A : public T_base
+ {
+ protected:
+ A () = default;
+ template <typename _Tp1, typename, typename ...Args>
+ friend o_r<_Tp1> make_f(Args&& ...args);
+ };
+
+ o_t<A>::ref_type create ()
+ {
+ return make_f<A>();
+ }
+
+ class B {};
}
-class A : public T_base
-{
-protected:
- A () = default;
- template <typename _Tp1, typename, typename ...Args>
- friend o_r<_Tp1> make_f(Args&& ...args);
-};
-
-o_t<A>::ref_type create ()
-{
- return make_f<A>();
-}
-
-class B {};
-
int
run_main (int, ACE_TCHAR *[])
{
@@ -73,10 +76,10 @@ run_main (int, ACE_TCHAR *[])
ACE_DEBUG ((LM_INFO,
ACE_TEXT ("Compiler Feature 24 Test does compile and run.\n")));
- o_r<A> l = create();
- o_r<A> l2 = make_f<A>();
+ FOO::o_r<FOO::A> l = FOO::create();
+ FOO::o_r<FOO::A> l2 = FOO::make_f<FOO::A>();
// next line doesn't compile and shouldn't
- //o_r<B> l3 = make_f<B>();
+ //FOO::o_r<FOO::B> l3 = FOO::make_f<FOO::B>();
ACE_END_TEST;