Здравствуйте Алекс, Вы писали:
ПК>>Неверно. f1 находится в анонимном namespace, который, в свою очередь, находится в namespace a. Почти эквивалентно следующему: <использование static>
А>Почему почти?
В первом случае f1 имеет external linkage. Т.е., например, в первом случае f1 может быть использована в качестве аргумента шаблона, а во втором — нет:
template<void(*f)()>
class C
{
};
namespace {
void f1()
{
}
}
int main()
{
C<f1> c; // OK
}
static void f1()
{
}
int main()
{
C<f1> c; // ERROR: f1 должна иметь external linkage
}
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен