Movatterモバイル変換


[0]ホーム

URL:



This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++11 status.

920. Ref-qualification support in the library

Section: 22.10.16[func.memfn]Status:C++11Submitter: Bronek KozickiOpened: 2008-10-06Last modified: 2016-01-28

Priority:Not Prioritized

View all otherissues in [func.memfn].

View all issues withC++11 status.

Duplicate of:1230

Discussion:

Daniel Krügler wrote:

Shouldn't above list be completed for &- and &&-qualifiedmember functions This would cause to add:

template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) &);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) const &);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) volatile &);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) const volatile &);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) &&);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) const &&);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) volatile &&);template<Returnable R, class T, CopyConstructible... Args>unspecified mem_fn(R (T::* pm)(Args...) const volatile &&);

yes, absolutely. Thanks for spotting this. Without this changemem_fncannot be initialized from pointer to ref-qualified member function. Ibelieve semantics of such function pointer is well defined.

[Post Summit Daniel provided wording.]

[Batavia (2009-05):]

We need to think about whether we really want to go down the proposed pathof combinatorial explosion.Perhaps a Note would suffice.

We would really like to have an implementation before proceeding.

Move to Open, and recommend this be deferred until after the nextCommittee Draft has been issued.

[2009-10-10 Daniel updated wording to post-concepts.]

1230(i) has a similar proposed resolution

[2009-10 Santa Cruz:]

Move to Ready.

Proposed resolution:

  1. Change 22.10[function.objects]/2, header<functional> synopsis as follows:

    // 20.7.14, member function adaptors:template<class R, class T>unspecified mem_fn(R T::*);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...));template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) volatile);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const volatile);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) volatile &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const volatile &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) volatile &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::*)(Args...) const volatile &&);
  2. Change the prototype list of 22.10.16[func.memfn] as follows [NB: Thefollowing text, most notably p.2 and p.3 whichdiscuss influence of the cv-qualification on the definition of thebase class's first template parameter remainsunchanged. ]:

    template<class R, class T>unspecified mem_fn(R T::* pm);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...));template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) volatile);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const volatile);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) volatile &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const volatile &);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) volatile &&);template<class R, class T, class ...Args>unspecified mem_fn(R (T::* pm)(Args...) const volatile &&);
  3. Remove 22.10.16[func.memfn]/5:

    Remarks: Implementations may implementmem_fn as a set ofoverloaded function templates.


[8]ページ先頭

©2009-2026 Movatter.jp