Недавняя сборка GCC 4.8 дает следующий код в заголовочном файле:
auto L = [](){};
struct S
{
decltype(L) m;
};
следующее предупреждение:
test.hpp:3:8: warning: 'S' has a field 'S::m' whose type uses the anonymous namespace [enabled by default]
struct S
^
Почему компилятор рассматривает тип лямбды для использования анонимного пространства имен? Я сделал лямбду глобальной, я нигде не использовал анонимное пространство имен.
ОБНОВЛЕНИЕ:Компиляция выдает одно и то же предупреждение, даже если я помещаю лямбду в явное пространство имен, например:
namespace N
{
auto L = [](){};
}
struct S
{
decltype(N::L) m;
};
ОБНОВЛЕНИЕ 2:На самом деле кажется, что даже лямбда-выражения класса имеют ту же проблему :
class N
{
static constexpr auto L = [](){};
};
struct S
{
decltype(N::L) m;
};
-. 121 ---1576260-
В моем приложении rails 3 он имеет:
//= require jquery
//= require jquery_ujs
//= require_tree.
//= require jquery-ui
И это работает нормально. Но я не понимаю, как это работает. Я думаю, что понимаю третью строку, которая, как мне кажется, добавляет в этот файл все, что находится в том же каталоге, что и этот файл (/app/assets/javascript ). Но как быть с первой строкой? Где взять файл jquery? Я не вижу его ни в одном из каталогов, упомянутых в комментарии в начале файла, в частности:
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
Куда рельсы идут, чтобы получить файл javascript jquery?