N
Size: a a a
ПК
ПК
Цель: сделать внутри класса метод для одержания размера массива, без лишнего call'а в конечном стабе.
AT
constexpr
не сработал?o
ПК
constexpr size_t sz = array<..., 10>::size();
o
constexpr
не сработал?AT
o
ПК
#include <cstdio>
template <class _type, size_t _size>
class array
{
public:
using element_type = _type;
constexpr size_t size() const {
return _size;
}
private:
_type _storage[_size];
};
int main() {
array<char, 8> arr;
printf("%zu\n", arr.size());
return 0;
}
ПК
#include <cstdio>
template <class _type, size_t _size>
class array
{
public:
using element_type = _type;
constexpr size_t size() const {
return _size;
}
private:
_type _storage[_size];
};
int main() {
array<char, 8> arr;
printf("%zu\n", arr.size());
return 0;
}
ПК
1mov %rax,-0x8(%rbp)
xor %eax,%eax
callq 1194 <_ZN3osl5arrayIcLm8EE4sizeEv>
mov %rax,%rsi
lea 0xe95(%rip), %rdi
mov $0x0, %eax
callq 1030 <printf@plt>
ПК
1mov %rax,-0x8(%rbp)
xor %eax,%eax
callq 1194 <_ZN3osl5arrayIcLm8EE4sizeEv>
mov %rax,%rsi
lea 0xe95(%rip), %rdi
mov $0x0, %eax
callq 1030 <printf@plt>
AT
-O1
тоже работает.