Попался (ты) ;) Точка с запятой там вобщето не к месту - с ней будет ill-formed, т.к. не ни одна из форм top-level деклараций не может состоять...
Это не выражение, это type-id. Синтаксис выражений определяется в 5.1 и конструкцию 'void(*)(const int)' ты при всем желании не разберешь как...
Причем здесь Страуструп. Способ разрешения неоднозначностей, о которых ты говоришь описан в ISO/IEC 14882 в параграфе 6.8 и 8.2, которые так и...
Кстати, вот иллюстрация отличия между 'object type' и 'function type': void(*p)(void) = ...; sizeof(*p); // error Результатом выражения '*p'...
Безусловно понимаю. Только вот эта часть: говорит именно об объявлении функции. Несогласен - приводи ссылки из стандарта. И кроме того, сама...
Это часть первоначального примера. Здесь нет декларации функции. В С++ такого не может быть. > Указатель в принципе не может иметь...
А это что - 'F* ptr' ? Кардинально меняет. Ну нет в исходном примере выделенного. Есть объявление(определение) которое имеет 'object type'. Ты...
Вот он, контекст: Про независимость от параметров шаблона первый сказал как раз ты ;) Я только привел ссылку на стандарт, в которой проясняется...
Во первых: 8.3.5/9 не является нормативным, т.к. содержит только примеры (помеченные как [Example:...]). Во вторых: обявления указателей описаны...
Так же как в коде, который привел green (я ему отвечал). А вот в контексте обсуждения несколько раз была упомянута конструкция 'typedef int...
Не теряй контекст. Чем здесь является 'function': struct S { function t; }; ? Как это какая разница? есть 'function type', есть 'pointer type',...
Явно разрешено (8.3.5/7): typedef void F(); struct A { F foo; }; void A::foo() {} //... template<class> struct B { F bar; };...
"If a declaration ... to have function type..." В первом посте происходит определение (и объявление) указателя, и его типом является никак не...
Этого никто не делает. Немного изменил: struct A { void foo(int, int){} }; void bar(int, int){} int main() { typedef void F(int, int); F...
Я думал что смайлик там по делу стоял... 'F' твоем примере выводится в 'void', и указатель на функцию (&helper) успешно приводится к 'void*'. 'F...
у 'T' - 'foo', абсолютно такой же как и в случае со скобками. 'F' имеет тип 'void(void)' или просто 'void()' - это так называемый 'function...
F* ptr = &helper; Типы 'ptr' и выражения '&helper' совпадают и равны 'void(*)(void)', поэтому никакой ошибки здесь быть не должно. Понятие...
Для стековых объектов можно в конструктор shared_ptr передавать пустой deleter.
Получится. Например так: в операторе [] для массива нужно возвращать прокси объект, который хранит ссылку на сам массив, плюс индекс. В свою...
В таком случае нужено вычленять кусок кода минимального объема, на котором у тебя воспроизводится неверное поведение. Иначе остается только гадать.
Имена участников (разделяйте запятой).