C++template meta programming如何进行IO?

听说模板元编程运行效率高,像像试一试
#include<iostream>
using namespace std;
template<int x>
struct number{
    using self=number<x>;
    static constexpr int value=x;
};
int a;
int main(){
    cin>>a;
    cout<<number<a>::value;
    return 0;
}

但。似乎模板的参数不能是变量
运行结果及报错内容

img

如何在模板元中进行交互?

这不是明摆着吗?
编译期间,你要如何得到运行期间的变量?
如果要在解析模板编译期的一些信息,使用static_assert

模板本来就运行在编译期