小编okn*_*vin的帖子

g ++无法解决模板函数重载

使用以下代码,g ++会失败:

template <typename X = int, typename T, typename ...R>
    inline void func(const T&, R...) {}

template <typename T>
    struct S {};

template <typename X = int, typename T, typename ...R>
    inline void func(const S<T>&, R...) {}

int main() {
    func(42);
    func(S<int>()); // OK
    func(S<int>(), 1); // NOK
    func<int>(S<int>(), 1); // NOK
}
Run Code Online (Sandbox Code Playgroud)

与:

<source>: In function 'int main()':
<source>:13:21: error: call of overloaded 'func(S<int>, int)' is ambiguous
     func(S<int>(), 1); // NOK
                     ^
<source>:13:21: note: candidates are:
<source>:2:17: note: …
Run Code Online (Sandbox Code Playgroud)

c++ gcc language-lawyer variadic-templates c++11

6
推荐指数
1
解决办法
282
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1

language-lawyer ×1

variadic-templates ×1