Re[4]: namespace
От: Павел Кузнецов  
Дата: 22.10.02 09:34
Оценка:
Здравствуйте Алекс, Вы писали:

ПК>>Неверно. 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
}
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен