以下のコードの何が問題になっていますか?最新バージョンのg++とclangはどちらもエラーになります。私はここで基本的な何かが欠けていると確信しています。
#include <iostream>
struct Z
{
static const int mysize = 10;
};
Z f2();
int main()
{
std::cout << f2()::mysize << std::endl;
}
ここでの動機は、以下のようなコードを使用してテンプレートを使用して配列のサイズを見つけることができるようにすることです。いろいろな方法があることは知っていますが、このアイデアに出くわしました。
template<int N> struct S
{
enum { mysize = N };
};
template<class T, int N> S<N> f(T (&)[N]);
int main()
{
char buf[10];
std::cout << f(buf)::mysize << std::endl;
}