Ничего не происходит.Шаблон просто объявляется, а затем явно создается.Это не вызывается.
На самом деле, я сомневаюсь, что он компилируется.Я не думаю, что if (bool)
является допустимым выражением.
Другая причина, по которой он не компилируется, состоит в том, что строковый литерал не может быть параметром шаблона.Я действительно хотел бы, чтобы это могло быть, потому что это было бы весьма полезно во многих конструкциях метапрограммирования, которые я использовал.Для того, чтобы передать char * в шаблон, вы должны сделать это:
extern char * param = "whatever";
expects_char_param<param>();
И даже если эта функция ДЕЙСТВУЛА и скомпилирована, и bool
был заменен на high
в теле,это был бы невероятно глупый способ сделать это.Чтобы понять, ЧТО это делает, просто представьте, что параметры являются переменными, какими они должны быть, и пройдитесь по коду.Если вы все еще не понимаете ... не знаю, что вам сказать.