类内静态常量成员的有关问题

类内静态常量成员的问题
问题一:
class Example {
public:
    static const double rate = 6.5;//为什么这行是错的?
    static const int vecSize = 20;//而这行是对的?
};

问题二:
下面的静态数据成员的声明和定义有错误吗?请解释原因。
// example.h
class Example{
public:
  static double rate = 6.5;
  static const int vecSize = 20;
  static vector<double> vec(vecSize);
};


//example.c
#include "example.h"
double Example::rate;
vector<double> Example::vec;

这道题的rate部分的错误我已经解决了,方法就是在类外定义rate而不是类内。但是vector部分的错误是什么呢?

------解决思路----------------------
貌似只能定义整数类型的内部静态变量
------解决思路----------------------
推荐C++11的constexp
#include<vector>
class Example {
public:
    static const double rate1;
    static constexpr double rate2 = 6.5f;
    static constexpr int vecSize = 20;
    static std::vector<double> vec;
};

const double Example::rate1 = 6.5f;
std::vector<double> Example::vec(Example::vecSize);
int main() {
    return 0;
}

------解决思路----------------------
  static vector<double> vec(vecSize);

包含了构造函数的调用,是为初始化。而类内只能初始化整数类型的静态常量。
------解决思路----------------------
放到类的外面定义