C++相談室 part166 (769レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
712: デフォルトの名無しさん (ワッチョイ 2596-TDpG) [] 2025/09/30(火) 21:38:35.37 ID:bXNPhBlr0 VC++20のテンプレート制約で不可思議なことが起きるのだけど、以下の二つは同じ意味だよね? 1だと目的通りTParentに該当static関数<T>があれば適用、なければスルーという挙動になるのだけど、 2だと無くても適用されちゃって他を探しに行かずにオーバーロード未解決に陥るんだけどどういうことだろう? 1 template<typename T, typename TParent> concept HasSizeGetter = requires { (size_t)TParent::template get_size<T>(); }; template<HasSizeGetter<TParent> T> static consteval size_t get_require_space() { return TParent::get_size<T>(); } 2 template<typename T> requires requires { (size_t)TParent::template get_size<T>(); } static consteval size_t get_size() { return TParent::get_size<T>(); } http://mevius.5ch.net/test/read.cgi/tech/1745631298/712
714: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2d32-jLB2) [sage] 2025/09/30(火) 23:39:48.15 ID:0fqHawiZ0 >>712 オーバーロード未解決という形で現れるのはよくわからないけど この場合はその関数テンプレートを使わなくても (呼び出さなくても) エラーになるのが正しい挙動だと思う。 get_size は依存名ではないのでテンプレートの定義時 (テンプレート実引数を当てはめる前) に名前のルックアップが試みられて失敗する。 requires 節はテンプレート引数の妥当性を検証する仕組みなのでテンプレート引数をあてはめなくても式が不成立になるようなのはエラー。 というのが私の理解なんだけどあんまり自信はない……。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/714
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s