Template solution which doesn't require duplicating everything (and hence is easier to maintain):

	template<bool bool_only=false>
	struct SomeFancyClassName
	{
		int4 colors[4];
		int4 kcolors[4];
		int4 alpha;
		float4 texdims[8];
		int4 zbias[2];
		int4 indtexscale[2];
		int4 indtexmtx[6];
		int4 fogcolor;
		int4 fogi;
		float4 fogf[2];

		// For pixel lighting
		int4 plight_colors[8];
		float4 plights[32];
		int4 pmaterials[4];

	private:
		typedef std::conditional<bool_only,bool,::int4>::type int4;
		typedef std::conditional<bool_only,bool,::float4>::type float4;
	};

	typedef SomeFancyClassName<false> PixelShaderConstants;
	typedef SomeFancyClassName<true> PixelShaderConstantsUsed;

Don't know if it's worth the amount of complexity introduced by this. @delroth ?