Feedback

C++ - Einfaches Beispiel für Traits

Veröffentlicht von am 6/3/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!