Почему этот код компилируется с помощью GCC (4.9 и 5+), но не с clang (3.5-3.9)?
void test(const int&) { }
int main() {
const int x = 42;
auto f = []{ test(x); };
}
У меня есть неопределенное представление о том, что расхождение связано с использованием ODR (One Definition Rule), но я не понимаю этого достаточно хорошо, чтобы понять, что происходит здесь.