Я пытаюсь использовать предложение «Требуется », и она работает только в том случае, если используется на фактическом конкретном объекте, передаваемом в качестве аргумента функции, но не тот, который дано 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
Почему это не требует возврата пункта при использовании Declval? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как указать (declval?) аргумент указателя функции для метода в блоке концепции «требуется»?
Anonymous » » в форуме C++ - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Xcode Рабочий процесс возврата возврата при использовании команды Flutter
Anonymous » » в форуме IOS - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Xcode Рабочий процесс возврата возврата при использовании команды Flutter
Anonymous » » в форуме IOS - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-