如何默认初始化静态类模板变量

时间:2016-11-09 19:10:17

标签: c++ templates

在以下代码中

#include <iostream>
#include <string>
#include <type_traits>

template<class T, typename =  std::enable_if<std::is_default_constructible<T>::value>>
struct E {
    static T var;   
};

int main() {
    std::cout << E<std::string>::var << std::endl;
}

如何为E<T>::var的每个模板实例化构建E默认值?目前我收到链接器错误

/home/tE1MjB/ccEXSZtn.o: In function `main':
prog.cpp:(.text.startup+0x12): undefined reference to `E<std::string, std::enable_if<true, void> >::var'
collect2: error: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

添加

10      1300
10      5000
10      2450
20      1100
20      3000
20      800
20      2975
20      3000
30      1500
30      1600
30      2850
30      1250
30      1250
30      950

课后定义。

Demo