#include <string>
#include <iostream>
#include <vector>
#include <array>
using namespace std;
class A {
public:
constexpr A() : _a(0) {}
constexpr A(int a) : _a(a) {}
constexpr int getValue() const noexcept { return _a; }
constexpr void setValue(int a) noexcept { _a = a; }
private:
int _a;
};
constexpr
int func(const int &a)
{
return a+1;
}
constexpr
A reflection(const A& p) noexcept
{
A result;
result.setValue(p.getValue() + 2);
return result;
}
int main(void)
{
cout << "----------------" << endl;
constexpr auto arraySize = 10;
array<int, arraySize> data;
cout << sizeof(data) << endl;
cout << "----------------" << endl;
int a = 10;
array<int, func(arraySize)> data2;
cout << sizeof(data2) << endl;
cout << "----------------" << endl;
constexpr A a2(5);
array<int, func(a2.getValue())> data3;
array<int, func(reflection(a2).getValue())> data4;
cout << sizeof(data3) << endl;
cout << sizeof(data4) << endl;
}