不能cout数据

时间:2010-03-20 15:31:30

标签: c++ metaprogramming

伙计们,last post我正在尝试在模板实例化时输出数据

template <unsigned long N>
   struct binary
   {
       std::cout << N;//<---------------------------------I'M TRYING HERE
       static unsigned const value
          = binary<N/10>::value << 1   // prepend higher bits
            | N%10;                    // to lowest bit

但是我收到了一个错误:

'错误2错误C2886:'std :: cout':符号不能在使用声明的成员中使用'

感谢您的帮助 附: 任何人都可以解释为什么我不能这样做?

3 个答案:

答案 0 :(得分:4)

  

我正在尝试在模板实例化时输出数据

模板实例化在编译时发生。您无法在编译时输出任何内容。

您所能做的就是在编译时计算值并在运行时计算它(即在函数内部)。

答案 1 :(得分:2)

你在一个不在方法内部的结构中。只有你可以调用函数。

答案 2 :(得分:2)

您可以声明变量,并在那里为它们赋值。但是类似的东西需要在函数内部。