actionlink со строгим контролем типов с asp.net mvc бета?

Нет, вы не можете. Одна из причин, по которой предлагается std::launder, заключается в том, что std::optional не реализуемо в C ++ 14. Вы можете обратиться к этому обсуждению для деталей.

С другой стороны, вы можете реализовать один без constexpr. Идея состоит в том, чтобы использовать буфер с reinterpret_cast, потому что результат reinterpret_cast всегда будет ссылаться на вновь созданный объект (в C ++ 17 std::launder все еще требуется, но в C ++ 14 это нормально). Например,

template
struct FakeOptional { 
    FakeOptional(){}  
    template
    void emplace(Args&&... args){
        new(&storage) T{std::forward(args)...};
    }
    void reset(){
        reinterpret_cast(&storage)->~T();
    }
    operator bool() const {
        return true;
    }
    const T* operator->() const {
        return reinterpret_cast(&storage);
    }
    T* operator->() {
        return reinterpret_cast(&storage);
    }
    std::aligned_storage_t storage;
};

Реализация boost::optional использует эту идею и не реализует constexpr семантику (вы можете обратиться к его исходному коду для подробности).

5
задан Haacked 21 October 2008 в 16:02
поделиться

2 ответа

Вам нужны Бета фьючерсы MVC ASP.NET, который является отдельной загрузкой

ASP.NET бета фьючерсы MVC

затем Ваш исходный код будет работать как прежде.

См. это сообщение для получения его работа: ТАК отправляют на недостающих расширениях

5
ответ дан 14 December 2019 в 04:51
поделиться

Microsoft.Web.Mvc блок предоставляет дополнительные методы HtmlHelper которые позволяют что-то как

<%= Html.ActionLink<SomeController>(c => c.Index()) %>
3
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: