以下代码可以使用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中找到了相关段落,如下所示。
在定义显式专门的类模板的成员时 在类主体之外,不使用语法模板<>
答案 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>
。