Есть следующий метод:
template<typename TOwner, typename T, typename TInput = T>
void SetProperty(BindableProperty<TOwner, T, TInput>& property, T& field, TInput value)
{
// code
}
Если не указывать третий параметр при инициализации
BindableProperty, то все ок, но есть переопределить третий, то нет. Приходится указывать явно.
Инициализация:
static inline BindableProperty<UIElement, std::reference_wrapper<const Cursor>, const Cursor&> CursorProperty =
BindableProperty<UIElement, std::reference_wrapper<const Cursor>, const Cursor&>(&SetCursor, Cursors::Arrow);
И вот тут ошибка
E0304:
void SetCursor(const Cursor& value) { SetProperty(CursorProperty, _cursor, value); } // E0304
const Cursor& GetCursor() const { return _cursor; }