相关疑难解决方法(0)

使用C++中的Clang进行模糊的部分特化17

template <typename Foo, Foo Part>
struct TSelect {};

enum What {
    The
};

template <typename Foo>
struct AnotherOneSelector {
    static constexpr Foo Id = Foo::The;
};

template <typename Foo, typename SelectPartType>
struct THelper;

template <typename Foo>
struct THelper<Foo, TSelect<Foo, AnotherOneSelector<Foo>::Id>> {};

template <typename Foo, Foo PartId>
struct THelper<Foo, TSelect<Foo, PartId>> {};

int main() {
    THelper<What, TSelect<What, What::The>> t;
}
Run Code Online (Sandbox Code Playgroud)

这段代码用gcc8.1编译每个标准选项(c ++ 11,c ++ 14,c ++ 17),但clang trunk不用c ++ 17(虽然用c ++ 14一切都很好) ).

消息错误是:

test.cpp:23:49: error: ambiguous …
Run Code Online (Sandbox Code Playgroud)

c++ template-specialization c++17

12
推荐指数
1
解决办法
333
查看次数

标签 统计

c++ ×1

c++17 ×1

template-specialization ×1