Можно ли использовать черты или другие методы, чтобы определить, были ли значения параметров функции (или метода) объявлены как const? Например, в приведенном ниже коде fn_params
можно использовать для определения того, что 1-й параметр имеет тип const int *
; однако второй параметр идентифицируется только как имеющий тип double
.Показатель константы значений параметра функции?
float foo(const int *, const double) { return 7.6f; }
template <typename T, typename ...Ts>
struct fn_params<T(*)(Ts...)> { using type = std::tuple<Ts...>; };
Параметры верхнего уровня 'const' игнорируются в виде функции. – chris
Что такое прецедент для этого? Попытка 'if (! Is_const (x)) x = 42' не будет компилироваться, даже если' is_const' будет работать. –
Эта черта будет выглядеть так: http://coliru.stacked-crooked.com/a/b1316c1ba5e284c4, если одиночный const на параметрах не будет проигнорирован. –