Am 19.02.20 um 11:02 schrieb Jonathan Wakely: > On Wed, 19 Feb 2020 at 07:53, Klaus Doldinger > <klaus.doldinger64@xxxxxxxxx> wrote: >> >> The following was possible in v9: >> >> template<auto N> >> struct A { >> constexpr auto size() const { >> return N; >> } >> }; >> >> template<typename A> >> void foo(const A& a) { >> constexpr auto s = a.size(); >> } >> >> int main() { >> A<10> x1; >> foo(x1); >> } >> >> In v10 this is rejected. >> >> Looks like a bug? > > No, I don't think so. The parameter a is not a constant expression, so > a.size() is not a constant expression, so can't be used to initialize > a constexpr variable. > That would be weird. If so, the follwing would be impossible: std::array<int, 10> a; std::array<int, a.size()> b;