次のようなヌル終了を保証する char buf ラッパーを作成しようとしています。
template<size_t N> class BufStr
{
public:
explicit BufStr(const char(&buf)[N])
{
memcpy(m_buf, buf, N);
m_buf[N-1] = '\0';
}
inline const char* c_str() const { return m_buf; }
protected:
char m_buf[N];
};
しかし、署名テンプレートを使用して、char buf をコンストラクターに直接渡し、sizeof を使用して配列のサイズを決定できるようにしたいので、コンパイル時に N を計算します。