Feedback

C++ - Einfaches Beispiel für Traits

Veröffentlicht von am 03.06.2008
(1 Bewertungen)
Hierbei handelt es sich um ein einfaches Beispiel für Traits. Wer mehr über diese Technik wissen möchte findet z. B. hier Informationen:
http://thad.notagoth.org/cpptraits_intro/
#include <iostream>
#include <vector>
#include <boost/tr1/utility.hpp>
using namespace std;

template< typename T > 
struct is_pointer{ 
	static const bool value = false; 
}; 

template< typename T > 
struct is_pointer< T* >{ 
	static const bool value = true; 
}; 

template< typename T >
void foo(T x)
{
	if (is_pointer<T>::value)
	{
		cout<<"pointer"<<endl;
	}
	else
	{
		cout<<"no pointer"<<endl;
	}
}

template< bool b > 
struct algorithm_selector { 

	template< typename T > 
	static void implementation( T& object ) 
	{ 
		cout<<"no pointer"<<endl;
	} 
}; 

template < > 
struct algorithm_selector< true > { 

	template< typename T > 
	static void implementation( T& object ) 
	{ 
		cout<<"pointer"<<endl;
	} 
}; 

template< typename T >
void foo2(T x)
{
	algorithm_selector<is_pointer<T>::value>::implementation(x);
}

int main()
{
	int *x =0;
	foo(x);
	foo2(x);

	system("pause");
}
Abgelegt unter Traits.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!