#include <iostream>
#include <array>
#include <vector>
using namespace std;
template<typename TContainer>
class GYoba final {
public:
GYoba();
int rows() const { return mRows; }
int cols() const { return mCols; }
private:
int mRows;
int mCols;
TContainer mData;
};
template<typename TValue, int rows, int cols>
using StaticYoba = GYoba<std::array<TValue, rows * cols>>;
template<typename TValue>
using DynamicYoba = GYoba<std::vector<TValue>>;
template<typename TContainer>
GYoba<TContainer>::GYoba() : mRows(0), mCols(0)
{
}
template<typename TValue, int rows, int cols>
template<> StaticYoba<TValue, rows, cols>::GYoba() : mRows(rows), mCols(cols)
{
}
int main() {
StaticYoba<double, 3, 3> sYoba;
std::cout << sYoba.rows() << " " << sYoba.cols() << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVENvbnRhaW5lcj4KY2xhc3MgR1lvYmEgZmluYWwgewpwdWJsaWM6CglHWW9iYSgpOwoJCglpbnQgcm93cygpIGNvbnN0IHsgcmV0dXJuIG1Sb3dzOyB9CglpbnQgY29scygpIGNvbnN0IHsgcmV0dXJuIG1Db2xzOyB9Cgpwcml2YXRlOgoJaW50IG1Sb3dzOwoJaW50IG1Db2xzOwoJVENvbnRhaW5lciBtRGF0YTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFRWYWx1ZSwgaW50IHJvd3MsIGludCBjb2xzPgp1c2luZyBTdGF0aWNZb2JhID0gR1lvYmE8c3RkOjphcnJheTxUVmFsdWUsIHJvd3MgKiBjb2xzPj47Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUVmFsdWU+CnVzaW5nIER5bmFtaWNZb2JhID0gR1lvYmE8c3RkOjp2ZWN0b3I8VFZhbHVlPj47Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUQ29udGFpbmVyPgpHWW9iYTxUQ29udGFpbmVyPjo6R1lvYmEoKSA6IG1Sb3dzKDApLCBtQ29scygwKQp7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFRWYWx1ZSwgaW50IHJvd3MsIGludCBjb2xzPgp0ZW1wbGF0ZTw+IFN0YXRpY1lvYmE8VFZhbHVlLCByb3dzLCBjb2xzPjo6R1lvYmEoKSA6IG1Sb3dzKHJvd3MpLCBtQ29scyhjb2xzKQp7Cn0KCmludCBtYWluKCkgewoJU3RhdGljWW9iYTxkb3VibGUsIDMsIDM+IHNZb2JhOwoJc3RkOjpjb3V0IDw8IHNZb2JhLnJvd3MoKSA8PCAiICIgPDwgc1lvYmEuY29scygpIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9
prog.cpp:33:10: error: invalid explicit specialization before '>' token
template<> StaticYoba<TValue, rows, cols>::GYoba() : mRows(rows), mCols(cols)
^
prog.cpp:33:10: error: enclosing class templates are not explicitly specialized
prog.cpp:33:50: error: invalid use of incomplete type 'class GYoba<std::array<TValue, (rows * cols)> >'
template<> StaticYoba<TValue, rows, cols>::GYoba() : mRows(rows), mCols(cols)
^
prog.cpp:8:7: note: declaration of 'class GYoba<std::array<TValue, (rows * cols)> >'
class GYoba final {
^