String comparison when the variable is modified is not working correctly in if statements (in foreach statements this doesn't make sense for smart-tpl anyway). This prevents us from using constructions like
{if $var|tolower == \"test\"}true{else}false{/if}. The main issue here is that string is really 2 variables instead of one (char* and size_t). Another issue is the fact that a Filter is not a variable, therefore we can't just pass a variable pointer to some compare function and let that function deal with it instead.