struct A{
static constexpr auto f(){
return []{};
}
static constexpr auto x = f();
};
Ошибка: использование «static constexpr auto a :: f ()» до вычета «auto '
Я знаю, что есть несколько вопросов, аналогичных этому, но я действительно не понимаю, что в этом конкретном случае предотвращает компилятор.>
Этот код не компилируется: < /p> [code]struct A{ static constexpr auto f(){ return []{}; } static constexpr auto x = f(); }; [/code] Ошибка: использование «static constexpr auto a :: f ()» до вычета «auto ' Я знаю, что есть несколько вопросов, аналогичных этому, но я действительно не понимаю, что в этом конкретном случае предотвращает компилятор.>
В ответах на этот вопрос (static constexpr или constexpr в теле функции?) указано, что static constexpr помещает переменную в раздел .rodata, тогда как constexpr само по себе может позволить инициализировать переменную во время выполнения.
ВАЖНО:...
Я не могу найти правильный синтаксис в cppreference для концепции, которая соответствует значению статического члена constexpr. Этот код компилируется и правильно работает в GCC и MSVC, но не работает в Clang. Мне было интересно, знает ли...
Этот код нормально компилируется в gcc, но не компилируется в Visual C++.
MCVE =
int main(){
int localVariable=0; //some local variable
auto lamb= () {
if constexpr(s==5){localVariable=7;}
///^ may modify some local variables
return 8;
};...