Shvetsov Evgeniy Ответов: 1

Как определить, есть ли func. Это constexpr? И отметьте другие функции. Constexpr в зависимости от этого?


Предполагая, что у меня есть какой-то шаблон функции f1:
template<typename f2>
int f1(int i, int j) throw() {
  return i + j + f2(i, j);
}

есть ли способ определить, может ли 'f2(i, j)' быть constexpr. (неважно, что это Функ. или функтор) и поэтому пометить " f1 " как constexpr. тоже?

Что я уже пробовал:

Я подумываю о том, чтобы использовать SFINAE здесь как-то, но не нашел, как обнаружить constexpr. using типовые черты.

[no name]

Почему вы хотите это сделать? Вы пытаетесь заставить f1 вычисляться во время компиляции, если f2 является constexpr. Какие предположения вы делаете?

1 Ответов

Рейтинг:
0

KarstenK

Как это понимать таких это квалификатор времени компиляции, так что вы ДОЛЖЕН объявите f2 также как constexpr.

template <constexpr typename="" f2="">
constexpr int f1(int i, int j) throw() {
  return i + j + f2(i, j);
}</constexpr>