c++11 - Why constexpr data members are not implicitly static? -
if this:
constexpr int len = 100;
len
variable defined const
without need of typing const
keyword.
have static
storage, without need type static
keyword.
from other hand, if same in class
:
struct a{ constexpr static int size = 100; };
size
still defined const
without need of typing const keyword,
however size
not static
data member.
need type static
explicitly. if don't there compilation error.
question is:
reason of need explicitly type static
?
constexpr
should not imply static
, because having constexpr
without static
makes sense. consider:
#include <iostream> struct dim { constexpr dim(int a,int b) : a(a), b(b) {} constexpr int prod() const { return a*b; } int a,b; }; int main() { constexpr dim sz(3,4); int arr[ sz.prod() ]; std::cout << sizeof(arr) << std::endl; }
it should not imply static
outside of class definition since static
there means 'local translation unit' , constexpr
not require that.
Comments
Post a Comment