Различное значение скобок в C ++?

Меня немного смущает интерпретация скобок компилятором. Не могли бы вы объяснить, что на самом деле происходит в таких контекстах?

Приведение: (int) a или int (a)

Передача параметров:

template <typename t>
int size(t (&)[n]){return n;}

Очевидно, может быть много разных контексты, в которых круглые скобки меняют значение или интерпретацию. Кто-нибудь, пожалуйста, объясните, что именно происходит за занавеской? Как компилятор знает, как интерпретировать в каждом контексте? Есть ли какие-то общие рекомендации или отдельные правила для каждого случая?

Спасибо

8
задан templatetypedef 19 February 2011 в 08:21
поделиться