mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //  (C) Copyright John Maddock 2001. 
 | |
| //  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_MEMBER_TEMPLATE_FRIENDS
 | |
| //  TITLE:         member template friends
 | |
| //  DESCRIPTION:   Member template friend syntax
 | |
| //                 ("template<class P> friend class frd;")
 | |
| //                 described in the C++ Standard,
 | |
| //                 14.5.3, not supported.
 | |
| 
 | |
| 
 | |
| namespace boost_no_member_template_friends{
 | |
| 
 | |
| template <class T>
 | |
| class foobar;
 | |
| 
 | |
| template <class T>
 | |
| class foo;
 | |
| 
 | |
| template <class T>
 | |
| bool must_be_friend_proc(const foo<T>& f);
 | |
| 
 | |
| template <class T>
 | |
| class foo
 | |
| {
 | |
| private:
 | |
|    template<typename Y> friend class foobar;
 | |
|    template<typename Y> friend class foo;
 | |
|    template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f);
 | |
|    int i;
 | |
| public:
 | |
|    foo(){ i = 0; }
 | |
|    template <class U>
 | |
|    foo(const foo<U>& f){ i = f.i; }
 | |
| };
 | |
| 
 | |
| template <class T>
 | |
| bool must_be_friend_proc(const foo<T>& f)
 | |
| { return f.i != 0; }
 | |
| 
 | |
| template <class T>
 | |
| class foobar
 | |
| {
 | |
|    int i;
 | |
| public:
 | |
|    template <class U>
 | |
|    foobar(const foo<U>& f)
 | |
|    { i = f.i; }
 | |
| };
 | |
| 
 | |
| 
 | |
| int test()
 | |
| {
 | |
|    foo<int> fi;
 | |
|    foo<double> fd(fi);
 | |
|    must_be_friend_proc(fd);
 | |
|    foobar<long> fb(fi);
 | |
|    (void) &fb;           // avoid "unused variable" warning
 | |
|    return 0;
 | |
| }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |