/** DGui project file.

Copyright: Trogu Antonio Davide 2011-2013

License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0).

Authors: Trogu Antonio Davide
*/
module dgui.core.tag;

public import std.variant;

mixin template tagProperty()
{
	private Variant _tt;

	/*
	 *	DMD 2.052 BUG: Cannot differentiate var(T)() and var(T)(T t)
	 *	template functions, use variadic template with length check.
	 */
	@property public T[0] tag(T...)()
	{
		static assert(T.length == 1, "Multiple parameters not allowed");
		return this._tt.get!(T[0]);
	}

	@property public void tag(T)(T t)
	{
		this._tt = t;
	}
}