静态数据成员的模板专业化

时间:2018-07-30 16:22:54

标签: c++ templates

以下代码可以使用MSVC 14.1进行编译,而不能使用Clang 5.0.1进行编译。

template <typename T>
class C
{
public:
    static int a[];
};
int C<int>::a[1] = { 1 };

C语的错误消息是:

  

错误:模板专门化需要'template <>'

此代码是否符合C ++标准? 我在here中找到了相关段落,如下所示。

  

在定义显式专门的类模板的成员时   在类主体之外,不使用语法模板<>

1 个答案:

答案 0 :(得分:1)

这不是import pandas as pd my_list = ["Node1","Node2","Node3","Node4"] df = pd.DataFrame({"Shipments":[1,2], "Origin":["Node1","Node2"], "Destination":["Node3","Node4"]}) my_dict1 = {"Node1":[], "Node2":["Node1","Node3"], "Node3":[], "Node4":["Node2", "Node3"]} my_dict2 = {"Node1":["Node2"], "Node2":["Node4"], "Node3":["Node2", "Node4"], "Node4":[]} data_dict = {"Node1:Node2:Node1:Node3":5, "Node1:Node2:Node2:Node4":5, "Node3:Node2:Node1:Node3":4, "Node3:Node2:Node2:Node4":4, "Node2:Node4:Node1:Node3":3, "Node2:Node4:Node2:Node4":3, "Node3:Node4:Node1:Node3":8, "Node3:Node4:Node2:Node4":8} output = [] for i in my_list: for index,row in df.iterrows(): # required in output c1 = [] c2 = [] output_row1 = [] output_row2 = [] # data from datframe df var1 = row.Origin var2 = row.Destination # data from dictionaries for j in my_dict1[i]: output_row1.append(data_dict[j+":"+i+":"+var1+":"+var2]) c1.append(-1) for j in my_dict2[i]: output_row2.append(data_dict[i+":"+j+":"+var1+":"+var2]) c2.append(1) # Final output output.append([output_row1 + output_row2, c1 + c2]) (例如,如果您有一个完全专业的explicitly specialized class template),因此此处的段落不适用于您的代码。实际上,您确实需要C<Foo>

相关问题