V
Size: a a a
V
V
В

В

NL
using namespace std;
template <typename T, typename T2>
decltype(auto) nth_element(T& container, T2 index) {
return container[index];
}
int main() {
vector<int> v(10,0);
nth_element(v,1) = 10;
auto x = nth_element(v,1);
for (auto &i:v) cout << i << '\n';
cout << "x == " << x << '\n';
}
decltype(auto). Казалось бы прекрасный код, но если пользователь вызовет неauto x = nth_element(v,1);
auto x = nth_element(vector<int>{1,2,3},1);Т8
BD
using namespace std;
template <typename T, typename T2>
decltype(auto) nth_element(T& container, T2 index) {
return container[index];
}
int main() {
vector<int> v(10,0);
nth_element(v,1) = 10;
auto x = nth_element(v,1);
for (auto &i:v) cout << i << '\n';
cout << "x == " << x << '\n';
}
decltype(auto). Казалось бы прекрасный код, но если пользователь вызовет неauto x = nth_element(v,1);
auto x = nth_element(vector<int>{1,2,3},1);К
template <typename T, size_t N>
decltype(auto) get_arr_size(T(&)[N]) { return N; }К
NL
template <typename T, size_t N>
decltype(auto) get_arr_size(T(&)[N]) { return N; }
BD
using namespace std;
template <typename T, typename T2>
decltype(auto) nth_element(T& container, T2 index) {
return container[index];
}
int main() {
vector<int> v(10,0);
nth_element(v,1) = 10;
auto x = nth_element(v,1);
for (auto &i:v) cout << i << '\n';
cout << "x == " << x << '\n';
}
decltype(auto). Казалось бы прекрасный код, но если пользователь вызовет неauto x = nth_element(v,1);
auto x = nth_element(vector<int>{1,2,3},1);template <typename T, typename T2>
auto& nth_element(T& container, T2 index) {
return container[index];
}
Т8
if constexpr и о static_assert?BD
if constexpr и о static_assert?BD
NL
if constexpr и о static_assert?Т8
Ct
Т8
Т8