Если другие решения в этом потоке не помогли обновить графические драйверы. Я не получал ошибку, как описано выше, но я не мог щелкнуть параметры в окне создания нового проекта.
У меня была установлена удаленная и переустановленная профессиональная, премиум-модель и эксплойт VS 2013 несколько раз, но в
Я запускаю Windows 8.1 (с новым обновлением) и Radeon HD7850.
Я запускаю Windows 8.1 (с новым обновлением).На самом деле это работает так же, как и другие.
struct T<'a> {
f: &'a Fn(&'a i32),
}
Это определение говорит, что функция f
будет жить в 'a
, и ее параметр также должен жить 'a
.
Рассмотрим время жизни fn main()
как 'm
, а время жизни внутренней области как 'i
. Вы создаете свою структуру в main
, поэтому ее время жизни будет 'm
, она будет жить в main
, если вы не перейдете в другую область.
t.f
, создан в 'i
. Согласно определению; аргумент и функция должны жить в одной и той же жизни. Но 'm
больше, чем 'i
. Так что это не приемлемо. 'i
. Это можно считать временем жизни f
равным его аргументу. Так что это обеспечивает определение. Если вы измените определение, как показано ниже, удалив ограничение из параметра. Таким образом, компилятор может определить подходящее время жизни аргумента, оно может быть больше, равно или меньше времени жизни.
//this means your f and it's argument's life time can be different
struct T<'a> {
f: &'a Fn(&i32),
}
Все ваши примеры будут действительны.
Здесь вы можете найти рабочие примеры в Playground