220 41587 <42fc876e-a4c7-a247-bc7f-632efbe1b28d@gmail.com> article
Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail
From: Matthew Woehlke <mwoehlke.floss@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: A virtual method that must *always* be overridden?
Date: Thu, 4 Apr 2019 13:18:52 -0400
Approved: news@gmane.org
Message-ID: <42fc876e-a4c7-a247-bc7f-632efbe1b28d@gmail.com>
Reply-To: std-proposals@isocpp.org
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226";
	logging-data="46231"; mail-complaints-to="usenet@blaine.gmane.org"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.0
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBC37LBFWUIFBB77YTDSQKGQE7YSARWQ@isocpp.org Thu Apr 04 19:18:57 2019
Return-path: <std-proposals+bncBC37LBFWUIFBB77YTDSQKGQE7YSARWQ@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-qt1-f200.google.com ([209.85.160.200])
	by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
	(Exim 4.89)
	(envelope-from <std-proposals+bncBC37LBFWUIFBB77YTDSQKGQE7YSARWQ@isocpp.org>)
	id 1hC60v-000BmN-8e
	for gclcip-std-proposals@m.gmane.org; Thu, 04 Apr 2019 19:18:57 +0200
Original-Received: by mail-qt1-f200.google.com with SMTP id t22sf2891069qtc.13
        for <gclcip-std-proposals@m.gmane.org>; Thu, 04 Apr 2019 10:18:57 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1554398336; cv=pass;
        d=google.com; s=arc-20160816;
        b=c2B1Rng1Qb8vkFbOw/1TkYOrVfAsxsPOY+ouFaI9joseG/0AY/6fYY814NX2Umc0ht
         Z2avFxlCN28OgG6Jgcco1m5BCh/01i7xBkGiFlNyBASaud+isVaFHs+kEm5fX6GU5VoQ
         4n9RI6Z/LOfdrk4/6wksxIJzvuVu+IGzD1KqR3wezFgsBYgjeMK/tUX5/oj6FYb3zhNJ
         5+d9mnC+okvnaAqWfVeU464ymupsBTlNIAl40LeEP3o7ExXQ3+OyrKa7kef6hsQhncJC
         +cFvPcOFPoZa9keABOz63UCpG1Z0E4xuMhIc9K19XTjmrmulK33nhr5IjlibrEm8gf5R
         Is/w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:reply-to:content-language
         :mime-version:user-agent:date:message-id:openpgp:subject:from:to
         :dkim-signature;
        bh=mCawpasmPvrBIrDXTXSkJl5UKCrHUNii3Ugax7xZxww=;
        b=r+4IytaM5MSjxT/9ZXIUwc7/MyIkM8/SYm3LeZbloaS3COA7/e+EKSgygi4bhRzXne
         Pn4XOQNVW9c3y0x4ly+2aPl2QFkHazswLU67uSQW5jAOHcayHcodFRGRNVZN4aCerEIy
         M1ZjCQQE2LdYk3mL7INMXkg/nTWNyNrNH3BUb8SlGsAlsXfsf1yyQvVV8dubj3JgFTls
         1avQVoqMSv0JXcWwQQ3LjYqz3nOKEzIxl4a3E7UsebGPRdWHTQD7Q14SAtvChbehl4nb
         X2YiES1L0m/QNnfWcQpIv/bEj8GE+v619xhXAM2ItCQUvKY1pbpKAK+4CJATy6+ZHwA1
         EMhg==
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=tbxMO9AD;
       spf=pass (google.com: domain of mwoehlke.floss@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=mwoehlke.floss@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=to:from:subject:openpgp:message-id:date:user-agent:mime-version
         :content-language:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:list-post:list-help:list-archive:list-subscribe
         :list-unsubscribe;
        bh=mCawpasmPvrBIrDXTXSkJl5UKCrHUNii3Ugax7xZxww=;
        b=OtySnddkumIjimsS1nnYvefYLcbgXolMDaYG/mXFc93yJfeLja4/MAtXqsipCX9pXD
         gmCl1/iRAfymvcA7AUt/AeAGR8hsdU9Isv8qPGh2AEBBgY1EUJuhDhfhY6wzCujuC4fB
         pPg5HLDZ0VZpTsIFgbUytJbLSZV+SmQDeit9CePDc4LkE6mZEzBzZ67yeC84A9nGKWPv
         IvB9kpt1NQdNHlPsQOhcPD6npMNz/wFX8wWOOHUzQ7Ao50shz1u9cyF1s45UblEy/VRW
         cgTqNikSz5qKJGfZmbi/ePYLR+btvSOeuO+vRDBv5J/QQobshmbnBWugBL+dU92zChX+
         ymig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:to:from:subject:openpgp:message-id:date
         :user-agent:mime-version:content-language:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=mCawpasmPvrBIrDXTXSkJl5UKCrHUNii3Ugax7xZxww=;
        b=UwNU+LyRf/y3NUSXKXW98gI0KXWWy9lK98iCRDuSub9kvInLoPYwNDDfljdeyDUJTe
         XhgnzrLc4MvVU+EPJPwhK55PS1s9R+pwY3+405UD1wQRzrZG5UDTbu8CC78hD5j0n665
         y2mkUHnpMPDEeg67CAOUlYjEZX89zmJD7i1G86qFD3vN9SvPKo14dA3Ef1lslS+LbGv9
         8Q5R5DrZSok3vJgTHMsVldzDnn+fZLTxT/BPtr7xuKFWiUYE3O25/zW6kABymm1youwy
         9Lmq4obFIclMF/g5bCNsJnKBK6rzxZmxnUr3VWcVCeSlq40wNE7ZHPUstMmDb3vfrmhn
         dU7g==
X-Gm-Message-State: APjAAAW+berl+YaAdFiUD1OKrAExc6Wx4LFFRRra0rL6PUVCQX7IFurM
	dXyfzoo/f4PMkUoHmrshNwzTDQ==
X-Google-Smtp-Source: APXvYqxRMzf3GXL8SVbb2xVQfeXgOcnC1UEsfMZ4JD42Fp6f/i8BTyhWlCJsfj4yxCaDDQJRiWOhKA==
X-Received: by 2002:ac8:28d5:: with SMTP id j21mr1111076qtj.4.1554398336001;
        Thu, 04 Apr 2019 10:18:56 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 2002:a05:620a:15ba:: with SMTP id f26ls1628593qkk.3.gmail; Thu,
 04 Apr 2019 10:18:54 -0700 (PDT)
X-Received: by 2002:a37:4dd0:: with SMTP id a199mr5975174qkb.164.1554398334335;
        Thu, 04 Apr 2019 10:18:54 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1554398334; cv=none;
        d=google.com; s=arc-20160816;
        b=l6NMnXQznybtcIEVx1Gvir9bkCpZpHkN4DpPDGw44pY0wxUvbbsBGvAWDiGX5+3EJm
         i22DK1LHg0h2iraQSyrRCxfjivElnsb0jd4bpyVdkziJjf3q1+mUvlMgZ/5HrBQIeMlI
         H77Ap147zTmAbOcaTCrt2DbRjoPE2Ibl0CKaC1fziJSATenBn69butrMg7wQA6VFOpeN
         m2HqSuxFfsYwVGf/RK08cKiyuzEuukYAUMoxWuxlemqtVghUY/CLZnjnKIiR80PbXRpj
         dKTlTyrAO/8G5P6u9YoQPz97/VUYCzYb5CXHTCU6dfIJuDYwx4/ThnwarO3ypT+oi1na
         S0zg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=content-transfer-encoding:content-language:mime-version:user-agent
         :date:message-id:openpgp:subject:from:to:dkim-signature;
        bh=jpET/ld51aiI6FRor2VCn9ofN5soP9VuqnwbcFG/NRs=;
        b=hgK0x/VWGopEJsUPxDq/mJp6yZIkNTm+srj3Wac0HbXVP+JIANi7ASLC9Ux9y3vtR4
         put0jGABqcMmFeMeBPVQSPjbmrR5KQSrlNniI8VeCl2HGBYVQFx4PCpHqW9rmizmOo7p
         9YRIyKolMcBM/UpogZaPcz3zh1DLNbEZ9e5jO1iWJhiVjeP724G63ExNfbPsmBQqwIlR
         FYajKt7aoHQkk2qHCDs/6qOsyGkLqX/TdNqecasESldE7UQp3Gvhbf7VBWKBXoDjA4+k
         +WtwGZEhxyxGLFVK3iaI9MvFhBjmY5Q1cu/8Noxp7mZXs4N/1o9kUhYKJhiYL3Vqms+s
         ei2A==
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=tbxMO9AD;
       spf=pass (google.com: domain of mwoehlke.floss@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=mwoehlke.floss@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Original-Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
        by mx.google.com with SMTPS id x4sor27470143qto.38.2019.04.04.10.18.54
        for <std-proposals@isocpp.org>
        (Google Transport Security);
        Thu, 04 Apr 2019 10:18:54 -0700 (PDT)
Received-SPF: pass (google.com: domain of mwoehlke.floss@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Received: by 2002:ac8:2a13:: with SMTP id k19mr6588193qtk.160.1554398333868;
        Thu, 04 Apr 2019 10:18:53 -0700 (PDT)
Original-Received: from gryphon.kitware.com (tripoint.kitware.com. [66.194.253.20])
        by smtp.googlemail.com with ESMTPSA id g34sm13316827qtc.9.2019.04.04.10.18.52
        for <std-proposals@isocpp.org>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Thu, 04 Apr 2019 10:18:52 -0700 (PDT)
Openpgp: preference=signencrypt
Content-Language: en-US
X-Original-Sender: mwoehlke.floss@gmail.com
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 header.i=@gmail.com header.s=20161025 header.b=tbxMO9AD;       spf=pass
 (google.com: domain of mwoehlke.floss@gmail.com designates 209.85.220.41 as
 permitted sender) smtp.mailfrom=mwoehlke.floss@gmail.com;       dmarc=pass
 (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:41587
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/41587>

While adding a `virtual Self* clone() = 0` to a class yesterday, I
realized something... why does C++ not have a way to mark a method that
must *always* be overridden? I'm talking about something *more* than a
pure virtual, i.e.:

  struct Root
  {
    virtual Root* foo() bikeshed;
  };

  struct Derived : Root
  {
  };

  struct MoreDerived : Derived
  {
    virtual Root* foo();
  };

  Root x; // okay
  Derived y; // error: 'foo' was not overridden
  MoreDerived z; // okay

Would this be useful?

-- 
Matthew

-- 
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/42fc876e-a4c7-a247-bc7f-632efbe1b28d%40gmail.com.

.
