小编don*_*uri的帖子

通过两个隐式构造函数构造一个值?

TLDR:我有两个模板化类OuterInner.Inner<X>可以隐式构造X,Outer<Y>也可以隐式构造Y.应该Outer<Inner<X>> = X()工作?

更多细节:

假设我有以下两个类:

template<typename T> 
class Inner {
  public: 
    Inner(const T& value) {}
    Inner(T&& value) {}
};

template<typename T>
class Outer {
  public:
    Outer(const T& value) {}
    Outer(T&& value) {}
};
Run Code Online (Sandbox Code Playgroud)

考虑以下功能:

struct SomeType{};
Outer<Inner<SomeType>> DoSomethingFails() {
  SomeType value;
  return value;      
}
Run Code Online (Sandbox Code Playgroud)

g ++抱怨:

no viable conversion from 'SomeType' to 'Outer<Inner<SomeType> >'
note: candidate constructor not viable: no known conversion from 'SomeType' to …
Run Code Online (Sandbox Code Playgroud)

c++ constructor implicit

3
推荐指数
1
解决办法
63
查看次数

标签 统计

c++ ×1

constructor ×1

implicit ×1