Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ G++;不';当两者都是模板时,是否允许在基类中使用受保护的默认构造函数?_C++_Templates_C++14_Protected - Fatal编程技术网

C++ G++;不';当两者都是模板时,是否允许在基类中使用受保护的默认构造函数?

C++ G++;不';当两者都是模板时,是否允许在基类中使用受保护的默认构造函数?,c++,templates,c++14,protected,C++,Templates,C++14,Protected,我已经创建了一个(在中也可见) 在代码的原始版本中,我为基类模板提供了一个受保护的默认构造函数: template <typename VAL_TYPE> class LazyType_Base { // .... LazyType_Base(void) =default; // .... @WhiZTiM我已经设置了一个(基本上只是链接GitHub中的两个文件,连接起来)。如何使用永久链接保存会话?@WhiZTiM-Ah,找到了。添加了一个链接。最小化:报告为He

我已经创建了一个(在中也可见)

在代码的原始版本中,我为基类模板提供了一个受保护的默认构造函数:

template <typename VAL_TYPE>
class LazyType_Base
{
    // ....
    LazyType_Base(void) =default;
// ....

@WhiZTiM我已经设置了一个(基本上只是链接GitHub中的两个文件,连接起来)。如何使用永久链接保存会话?@WhiZTiM-Ah,找到了。添加了一个链接。最小化:报告为Heh。我在这里的第一个问题是关于GCC存在的各种问题之一,其中类成员的大括号构造破坏了访问控制。我仍然需要在不同的地方使用括号。我还遇到了一些其他问题,其中大括号会导致segfaults(?!?!),但还不能将它们最小化,因为它们似乎依赖于库类的继承。
template <typename VAL_TYPE>
class LazyType_Eager : public LazyType_Base<VAL_TYPE>
{
  public:
    LazyType_Eager(
        VAL_TYPE&& final_val)
      : LazyType_Base<VAL_TYPE>{}
      , val_{final_val}
    {}
// .....
In file included from Test_OptionallyLazy.cpp:3:0:
OptionallyLazy.hpp: In instantiation of ‘LazyType_Eager<VAL_TYPE>::LazyType_Eager(VAL_TYPE&&) [with VAL_TYPE = int]’:
Test_OptionallyLazy.cpp:22:14:   required from here
OptionallyLazy.hpp:23:5: error: ‘LazyType_Base<VAL_TYPE>::LazyType_Base() [with VAL_TYPE = int]’ is protected
     LazyType_Base(void) =default;
     ^
OptionallyLazy.hpp:58:23: error: within this context
       , val_{final_val}
class Meow
{
  protected:
    Meow(void) =default;    
  public:    
    virtual void f() {}
};

class Purr : public Meow
{
  public:
    Purr()
      : Meow{}
    {}

};