Сообщение занятно: constexpr + mutable от 08.09.2023 22:12
Изменено 08.09.2023 22:14 Sm0ke
занятно: constexpr + mutable
constexpr + mutable (можно менять значение compile time константы)
Узнал об этом из этого видео:
https://www.youtube.com/watch?v=67DenIV45xY
И решил проверить: https://godbolt.org/z/r174GdMn9
Результат:
Пока не придумал как это можно использовать. Просто занятный факт.
p/s
При попытке вызвать t_const_mut::get() в consteval контексте компилятор от vs выдаёт Internal compiler error.
В то время как clang и gcc этого делать не позволяет, ссылаясь на чтение mutable мембера в compile-time.
Узнал об этом из этого видео:
https://www.youtube.com/watch?v=67DenIV45xY
И решил проверить: https://godbolt.org/z/r174GdMn9
#include <iostream>
struct t_const_mut
{
// data
mutable int
value;
constexpr int
get() const
{ return ++this->value; }
};
constexpr const t_const_mut
g_obj{0};
int main()
{
std::cout
<< g_obj.get() << ' '
<< g_obj.get() << '\n';
return 0;
}
Результат:
Program returned: 0
1 2
Пока не придумал как это можно использовать. Просто занятный факт.
p/s
При попытке вызвать t_const_mut::get() в consteval контексте компилятор от vs выдаёт Internal compiler error.
В то время как clang и gcc этого делать не позволяет, ссылаясь на чтение mutable мембера в compile-time.
занятно: constexpr + mutable
constexpr + mutable (можно менять значение compile time константы)
Узнал об этом из этого видео:
И решил проверить: https://godbolt.org/z/r174GdMn9
Результат:
Пока не придумал как это можно использовать. Просто занятный факт.
p/s gblt
При попытке вызвать t_const_mut::get() в consteval контексте компилятор от vs выдаёт Internal compiler error.
В то время как clang и gcc этого делать не позволяет, ссылаясь на чтение mutable мембера в compile-time.
Узнал об этом из этого видео:
yt | |
https://www.youtube.com/watch?v=67DenIV45xY | |
И решил проверить: https://godbolt.org/z/r174GdMn9
#include <iostream>
struct t_const_mut
{
// data
mutable int
value;
constexpr int
get() const
{ return ++this->value; }
};
constexpr const t_const_mut
g_obj{0};
int main()
{
std::cout
<< g_obj.get() << ' '
<< g_obj.get() << '\n';
return 0;
}
Результат:
Program returned: 0
1 2
Пока не придумал как это можно использовать. Просто занятный факт.
p/s gblt
При попытке вызвать t_const_mut::get() в consteval контексте компилятор от vs выдаёт Internal compiler error.
В то время как clang и gcc этого делать не позволяет, ссылаясь на чтение mutable мембера в compile-time.