본문 바로가기

프로그램/새롭게 발견한 c++ 패턴

중첩 aggregate 시 버그

#include <vector>
#include <array>
#include <type_traits>
#include <iostream>
using int_ = int;

static class size_2d_
{
};
template<int X_, int Y_>
class size_2d : public size_2d_
{
public:
    static constexpr int X = X_;
    static constexpr int Y = Y_;
};

template<typename T, typename vT>
    requires std::is_base_of_v<size_2d_, T>
using matrix = std::array<std::array<vT, T::X>, T::Y>;


int main()
{
    matrix<size_2d<3, 4>, int> mat =
    {{ //여기서 두 겹을 써야한다.
        {1,2,3},
        {4,5,6},
        {7,8,9},
        {1,2,3}
    }};

    for (int y = 0; y < 5; y++)
    {
        for (int x = 0; x < 5; x++)
        {
            std::cout << mat[y][x];
        }
        std::cout << std::endl;
    }
}
//왜냐하면 {{1,2,3},4,5,6}을 {1,2,3,4,5,6}이랑 같게 취급하는 문법이 있기 때문ㅇ다

'프로그램 > 새롭게 발견한 c++ 패턴' 카테고리의 다른 글

unique_ptr factory  (0) 2025.07.31
이런 방법이?  (3) 2025.07.25
이동가능한 guard  (0) 2025.07.22
버그1  (0) 2025.07.22
std::pair에 operator[]()을 추가해보자  (0) 2025.07.20