Вы на практике использовали стандартные классы в компил-тайме? Только честно.
Вот, оказывается, все работает:
| | Скрытый текст |
| | #include <iostream>
#include <vector>
#include <span>
#include <cstdint>
constexpr int fun1()
{
std::vector<int> vec1 = std::vector<int>(1000);
std::span<int> span1 = std::span<int>(vec1.begin(), vec1.end());
std::optional<int> opt1 = 1;
span1[0] = *opt1;
std::string str1 = "test";
str1[0] = vec1[0] + 1;
return str1[0];
}
int main(int argc, const char * argv[]) {
constexpr int result = fun1();
static_assert(result == 2);
return 0;
}
|
| | |
Хотя по идее тот же вектор — создает свое тело (массив для хранения данных) в куче. Но в компил-тайме умеет работать иным образом.
Это ж сколько дурной работы было проделано
А что на счет других стандартных классов — можно ли огласить список какие из них имеют поддержку компил-тайм?
Так же, получается, не всей методы этих классов доступны в компил-тайм. По идее нужно выделять цветом те что доступны.
Есть такие таблицы?