Почему это не требует возврата пункта при использовании Declval?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему это не требует возврата пункта при использовании Declval?

Сообщение Anonymous »

Я пытаюсь использовать предложение «Требуется », и она работает только в том случае, если используется на фактическом конкретном объекте, передаваемом в качестве аргумента функции, но не тот, который дано Declval :
struct ImageMipInfo
{
ImageMipInfo() {}
ImageMipInfo(int a)
{}
static inline constexpr int JUST_SERIALISE_ME_BY_MEMCPYING{};
};

template
static constexpr bool isTypeMemcopyableUsingArgumentObject(T& arg)
{
constexpr bool bHasMemcpyOverride = requires { arg.JUST_SERIALISE_ME_BY_MEMCPYING; };

return bHasMemcpyOverride;
}

template
static constexpr bool isTypeMemcopyableUsingDeclVal()
{
constexpr bool bHasMemcpyOverride = requires { declval().JUST_SERIALISE_ME_BY_MEMCPYING; };
return bHasMemcpyOverride;
}

int main() {

ImageMipInfo mip_info;
static_assert(isTypeMemcopyableUsingArgumentObject(mip_info)); // This passes
static_assert(isTypeMemcopyableUsingDeclVal()); // This doesn't pass

}
< /code>
Ошибка, которую я получаю на Clang: < /p>

Ошибка: статическое утверждение не удалось из -за требования < /p>
< /blockquote>
и в gcc: < /p>

not a a arcmumt ry -indry 'or in reply' ry ant 'brc />
. шаблон
параметр, поэтому объявление «deckval» должно быть доступно < /p>
< /blockquote>
Ссылка на Godbolt < /p>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ng-declval
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»