Skip to content

Broken links in index pages #12

Description

@jhcarl0814

N4950, Index (https://timsong-cpp.github.io/cppwp/n4950/generalindex ):

6 broken links can be found by searching |see using "Find-in-page" (Ctrl+F).


N4868, Index (https://timsong-cpp.github.io/cppwp/n4868/generalindex ):

3 broken links can be found by searching |see using "Find-in-page" (Ctrl+F).

6 links' #targets do not exist:
0 (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:0 )'s link zero, null (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:zero,null ).
decrement operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:decrement_operator )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:overloading,decrement_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:decrement_operator,overloaded )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:overloading,decrement_operator ).
Eulerian integral of the first kind (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:Eulerian_integral_of_the_first_kind )'s link beta (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:beta ).
increment operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:increment_operator )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:overloading,increment_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:increment_operator,overloaded )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4868/generalindex#:overloading,increment_operator ).


N4861, Index (https://timsong-cpp.github.io/cppwp/n4861/generalindex ):

Some links' #targets do not exist:

#error (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:#error )'s link preprocessing directives, error (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:preprocessing_directives,error ).
#line (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:#line )'s link preprocessing directives, line control (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:preprocessing_directives,line_control ).
#pragma (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:#pragma )'s link preprocessing directives, pragma (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:preprocessing_directives,pragma ).
0 (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:0 )'s link zero, null (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:zero,null ).
decrement operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:decrement_operator )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:overloading,decrement_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:decrement_operator,overloaded )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:overloading,decrement_operator ).
Eulerian integral of the first kind (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:Eulerian_integral_of_the_first_kind )'s link beta (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:beta ).
free store (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:free_store )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:new,delete ).
function (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:function )'s link friend function; member function; inline function; virtual function (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:friend_function;_member_function;_inline_function;_virtual_function ).
inclusion (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:inclusion )'s link preprocessing directives, source-file inclusion (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:preprocessing_directives,source-file_inclusion ).
source file (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:inclusion,source_file )'s link preprocessing directives, source-file inclusion (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:preprocessing_directives,source-file_inclusion ).
increment operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:increment_operator )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:overloading,increment_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:increment_operator,overloaded )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:overloading,increment_operator ).
lattice (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:lattice )'s link DAG, subobject (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:DAG,subobject ).
local scope (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:local_scope )'s link block scope (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:block_scope ).
memory management (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:memory_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:new,delete ).
phase synchronization point (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:phase_synchronization_point )'s link barrier, phase synchronization point (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:barrier,phase_synchronization_point_ ).
storage management (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:storage_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:new,delete ).
template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template )'s link equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:equivalent,function_template ).
template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template )'s link functionally equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:functionally_equivalent,function_template ).
function (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template,function )'s link equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:equivalent,function_template ).
function (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template,function )'s link functionally equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:functionally_equivalent,function_template ).
equivalent (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template,function,equivalent )'s link equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:equivalent,function_template ).
functionally equivalent (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:template,function,functionally_equivalent )'s link functionally equivalent, function template (https://timsong-cpp.github.io/cppwp/n4861/generalindex#:functionally_equivalent,function_template ).


N4659, Index (https://timsong-cpp.github.io/cppwp/n4659/generalindex ):

Some links' #targets do not exist:

0 (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:0 )'s link zero, null (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:zero,null ).
decay (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decay )'s link conversion, array to pointer (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,array_to_pointer ).
decay (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decay )'s link conversion, function to pointer (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,function_to_pointer ).
array (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decay,array )'s link conversion, array to pointer (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,array_to_pointer ).
function (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decay,function )'s link conversion, function to pointer (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,function_to_pointer ).
decrement operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decrement_operator )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:overloading,decrement_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:decrement_operator,overloaded )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:overloading,decrement_operator ).
free store (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:free_store )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:new,delete ).
function (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:function )'s link friend function; member function; inline function; virtual function ( https://timsong-cpp.github.io/cppwp/n4659/generalindex#:friend_function;_member_function;_inline_function;_virtual_function).
increment operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:increment_operator )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:overloading,increment_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:increment_operator,overloaded )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:overloading,increment_operator ).
lattice (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:lattice )'s link DAG, subobject (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:DAG,subobject ).
memory management (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:memory_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:new,delete ).
rvalue (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:rvalue )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,lvalue_to_rvalue ).
lvalue conversion to (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:rvalue,lvalue_conversion_to )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:conversion,lvalue_to_rvalue ).
storage management (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:storage_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4659/generalindex#:new,delete ).


N4140, Index (https://timsong-cpp.github.io/cppwp/n4140/generalindex )

Some terms have conflicting ids:

~, see operator, one's complement, see destructor's id should change from _ (is used by _, see character, underscore) to ~.
extern reference, [dcl.init.ref]'s id should change from declaration,extern (is used by extern, [basic.def]) to declaration,extern_reference. (monospace font word interrupts id generation?)
typedef as type, [dcl.typedef]'s id should change from declaration,typedef (is used by typedef, [basic.def]) to declaration,typedef_as_type. (monospace font word interrupts id generation?)
<exception>, [support.exception]'s id should change from exception (is used by exception) to <exception>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
hash_function's id (hash_function) clashes with hash function, [unord.req]'s id (hash_function). hash_function should be moved to Index of library names (https://timsong-cpp.github.io/cppwp/n4140/libraryindex ).
<limits>, [limits.numeric]'s id should change from limits (is used by limits) to <limits>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
<new>, [support.dynamic]'s id should change from new (is used by new, [basic.stc.dynamic], [expr.new]) to <new>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
static member local class, [class.static.data]'s id should change from restriction,static (is used by static, [dcl.stc]) to restriction,static_member_local_class. (monospace font word interrupts id generation?)
transform_primaryl's id (transform_primary) clashes with transform_primary's id (transform_primary). Maybe transform_primaryl is a typo?
hash_function, [unord.req]'s id (unordered_associative_containers,hash_function) clashes with hash function, [unord.req]'s id (hash_function). hash_function, [unord.req] should be moved to Index of library names (https://timsong-cpp.github.io/cppwp/n4140/libraryindex ).

Some links' #targets do not exist:

!= (https://timsong-cpp.github.io/cppwp/n4140/generalindex#!= )'s link inequality operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#inequality_operator ).
& (https://timsong-cpp.github.io/cppwp/n4140/generalindex#& )'s link bitwise AND operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#bitwise_AND_operator ).
&& (https://timsong-cpp.github.io/cppwp/n4140/generalindex#&& )'s link logical AND operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#logical_AND_operator ).
* (https://timsong-cpp.github.io/cppwp/n4140/generalindex#* )'s link multiplication operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#multiplication_operator ).
, (https://timsong-cpp.github.io/cppwp/n4140/generalindex#, )'s link comma operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#comma_operator ).
->* (https://timsong-cpp.github.io/cppwp/n4140/generalindex#->* )'s link pointer to member operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#pointer_to_member_operator ).
.* (https://timsong-cpp.github.io/cppwp/n4140/generalindex#.* )'s link pointer to member operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#pointer_to_member_operator ).
/ (https://timsong-cpp.github.io/cppwp/n4140/generalindex#/ )'s link division operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#division_operator ).
< (https://timsong-cpp.github.io/cppwp/n4140/generalindex#< )'s link less than operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#less_than_operator ).
<...> (https://timsong-cpp.github.io/cppwp/n4140/generalindex#<...> )'s link preprocessing directive, header (https://timsong-cpp.github.io/cppwp/n4140/generalindex#preprocessing_directive,header ).
<= (https://timsong-cpp.github.io/cppwp/n4140/generalindex#<= )'s link less than or equal to operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#less_than_or_equal_to_operator ).
== (https://timsong-cpp.github.io/cppwp/n4140/generalindex#== )'s link equality operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#equality_operator ).
> (https://timsong-cpp.github.io/cppwp/n4140/generalindex#> )'s link greater than operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#greater_than_operator ).
>= (https://timsong-cpp.github.io/cppwp/n4140/generalindex#>= )'s link greater than or equal operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#greater_than_or_equal_operator ).
?: (https://timsong-cpp.github.io/cppwp/n4140/generalindex#?: )'s link conditional expression operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conditional_expression_operator ).
\ (https://timsong-cpp.github.io/cppwp/n4140/generalindex#\ )'s link backslash (https://timsong-cpp.github.io/cppwp/n4140/generalindex#backslash ).
^ (https://timsong-cpp.github.io/cppwp/n4140/generalindex#^ )'s link bitwise exclusive OR operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#bitwise_exclusive_OR_operator ).
| (https://timsong-cpp.github.io/cppwp/n4140/generalindex#| )'s link bitwise inclusive OR operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#bitwise_inclusive_OR_operator ).
|| (https://timsong-cpp.github.io/cppwp/n4140/generalindex#|| )'s link logical OR operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#logical_OR_operator ).
0 (https://timsong-cpp.github.io/cppwp/n4140/generalindex#0 )'s link zero, null (https://timsong-cpp.github.io/cppwp/n4140/generalindex#zero,_null ).
concatenation (https://timsong-cpp.github.io/cppwp/n4140/generalindex#concatenation )'s link ## (https://timsong-cpp.github.io/cppwp/n4140/generalindex### ).
macro argument (https://timsong-cpp.github.io/cppwp/n4140/generalindex#concatenation,macro_argument )'s link ## (https://timsong-cpp.github.io/cppwp/n4140/generalindex### ).
conversion operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conversion_operator )'s link conversion, user defined (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conversion,user_defined ).
copy (https://timsong-cpp.github.io/cppwp/n4140/generalindex#copy )'s link constructor, copy; assignment, copy (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,copy;_assignment,copy ).
class object (https://timsong-cpp.github.io/cppwp/n4140/generalindex#copy,class_object )'s link constructor, copy; assignment, copy (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,copy;_assignment,copy ).
copy elision (https://timsong-cpp.github.io/cppwp/n4140/generalindex#copy_elision )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,copy,elision;_constructor,move,elision ).
decay (https://timsong-cpp.github.io/cppwp/n4140/generalindex#decay )'s link conversion, array to pointer; conversion, function to pointer (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conversion,array_to_pointer;_conversion,function_to_pointer ).
decrement operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#decrement_operator )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#overloading,decrement_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4140/generalindex#decrement_operator,overloaded )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#overloading,decrement_operator ).
elision (https://timsong-cpp.github.io/cppwp/n4140/generalindex#elision )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,copy,elision;_constructor,move,elision ).
copy (https://timsong-cpp.github.io/cppwp/n4140/generalindex#elision,copy )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,copy,elision;_constructor,move,elision ).
escape character, (https://timsong-cpp.github.io/cppwp/n4140/generalindex#escape_character )'s link backslash (https://timsong-cpp.github.io/cppwp/n4140/generalindex#backslash ).
free store (https://timsong-cpp.github.io/cppwp/n4140/generalindex#free_store )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4140/generalindex#new,_delete ).
function (https://timsong-cpp.github.io/cppwp/n4140/generalindex#function )'s link friend function; member function; inline function; virtual function (https://timsong-cpp.github.io/cppwp/n4140/generalindex#friend_function;_member_function;_inline_function;_virtual_function ).
increment operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#increment_operator )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#overloading,increment_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n4140/generalindex#increment_operator,overloaded )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#overloading,increment_operator ).
lattice (https://timsong-cpp.github.io/cppwp/n4140/generalindex#lattice )'s link DAG, subobject (https://timsong-cpp.github.io/cppwp/n4140/generalindex#DAG,subobject ).
memory management (https://timsong-cpp.github.io/cppwp/n4140/generalindex#memory_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4140/generalindex#new,_delete ).
move (https://timsong-cpp.github.io/cppwp/n4140/generalindex#move )'s link constructor, move; assignment, move (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,move;_assignment,move ).
class object (https://timsong-cpp.github.io/cppwp/n4140/generalindex#move,class_object )'s link constructor, move; assignment, move (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,move;_assignment,move ).
object class (https://timsong-cpp.github.io/cppwp/n4140/generalindex#object_class )'s link also class object (https://timsong-cpp.github.io/cppwp/n4140/generalindex#also_class_object ). (also should be moved outside the link.)
optimization of temporary (https://timsong-cpp.github.io/cppwp/n4140/generalindex#optimization_of_temporary )'s link elimination of temporary (https://timsong-cpp.github.io/cppwp/n4140/generalindex#elimination_of_temporary ).
rvalue (https://timsong-cpp.github.io/cppwp/n4140/generalindex#rvalue )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conversion,lvalue_to_rvalue ).
lvalue conversion to (https://timsong-cpp.github.io/cppwp/n4140/generalindex#rvalue,lvalue_conversion_to )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n4140/generalindex#conversion,lvalue_to_rvalue ).
sequencing operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#sequencing_operator )'s link comma operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#comma_operator ).
shift operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#shift_operator )'s link left shift operator, right shift operator (https://timsong-cpp.github.io/cppwp/n4140/generalindex#left_shift_operator,_right_shift_operator ).
special_member_function (https://timsong-cpp.github.io/cppwp/n4140/generalindex#special_member_function )'s link constructor, destructor, inline function, user-defined conversion, virtual function (https://timsong-cpp.github.io/cppwp/n4140/generalindex#constructor,destructor,inline_function,user-defined_conversion,virtual_function ).
storage management (https://timsong-cpp.github.io/cppwp/n4140/generalindex#storage_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n4140/generalindex#new,_delete ).
stringize (https://timsong-cpp.github.io/cppwp/n4140/generalindex#stringize )'s link # (https://timsong-cpp.github.io/cppwp/n4140/generalindex## ).

N4140, Index of library names (https://timsong-cpp.github.io/cppwp/n4140/libraryindex)

All the <header> links' ids are missing < and >, it's just that these clashes with another:

<array> array
<bitset> bitset
complex <complex>
<condition_variable> condition_variable
<deque> deque
exception <exception>
<forward_list> forward_list
<fstream> fstream
<initializer_list> initializer_list
emplace insert
emplace push_back
emplace push_front
<ios> ios
<istream> istream
<list> list
<locale> locale
<map> map
<mutex> mutex
<new> new
<ostream> ostream
<queue> queue
<regex> regex
<set> set
<stack> stack
<streambuf> streambuf
<thread> thread
<tuple> tuple
<unordered_map> unordered_map
<unordered_set> unordered_set
<valarray> valarray
<vector> vector

N3337, Index (https://timsong-cpp.github.io/cppwp/n3337/generalindex )

Some terms have conflicting ids:

~, see operator, one's complement, see destructor's id should change from _ (is used by _, see character, underscore) to ~.
extern reference, [dcl.init.ref]'s id should change from declaration,extern (is used by extern, [basic.def]) to declaration,extern_reference. (monospace font word interrupts id generation?)
typedef as type, [dcl.typedef]'s id should change from declaration,typedef (is used by typedef, [basic.def]) to declaration,typedef_as_type. (monospace font word interrupts id generation?)
<exception>, [support.exception]'s id should change from exception (is used by exception) to <exception>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
hash_function's id (hash_function) clashes with hash function, [unord.req]'s id (hash_function). hash_function should be moved to Index of library names (https://timsong-cpp.github.io/cppwp/n3337/libraryindex ).
<limits>, [limits.numeric]'s id should change from limits (is used by limits) to <limits>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
<new>, [support.dynamic]'s id should change from new (is used by new, [basic.stc.dynamic], [expr.new]) to <new>. (Actually all the <header> links' ids are missing < and >, it's just that this one clashes with another.)
static member local class, [class.static.data]'s id should change from restriction,static (is used by static, [dcl.stc]) to restriction,static_member_local_class. (monospace font word interrupts id generation?)
transform_primaryl's id (transform_primary) clashes with transform_primary's id (transform_primary). Maybe transform_primaryl is a typo?
hash_function, [unord.req]'s id (unordered_associative_containers,hash_function) clashes with hash function, [unord.req]'s id (hash_function). hash_function, [unord.req] should be moved to Index of library names (https://timsong-cpp.github.io/cppwp/n3337/libraryindex ).

Some links' #targets do not exist:

!= (https://timsong-cpp.github.io/cppwp/n3337/generalindex#!= )'s link inequality operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#inequality_operator ).
& (https://timsong-cpp.github.io/cppwp/n3337/generalindex#& )'s link bitwise AND operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#bitwise_AND_operator ).
&& (https://timsong-cpp.github.io/cppwp/n3337/generalindex#&& )'s link logical AND operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#logical_AND_operator ).
* (https://timsong-cpp.github.io/cppwp/n3337/generalindex#* )'s link multiplication operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#multiplication_operator ).
, (https://timsong-cpp.github.io/cppwp/n3337/generalindex#, )'s link comma operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#comma_operator ).
->* (https://timsong-cpp.github.io/cppwp/n3337/generalindex#->* )'s link pointer to member operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#pointer_to_member_operator ).
.* (https://timsong-cpp.github.io/cppwp/n3337/generalindex#.* )'s link pointer to member operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#pointer_to_member_operator ).
/ (https://timsong-cpp.github.io/cppwp/n3337/generalindex#/ )'s link division operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#division_operator ).
< (https://timsong-cpp.github.io/cppwp/n3337/generalindex#< )'s link less than operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#less_than_operator ).
<...> (https://timsong-cpp.github.io/cppwp/n3337/generalindex#<...> )'s link preprocessing directive, header (https://timsong-cpp.github.io/cppwp/n3337/generalindex#preprocessing_directive,header ).
<= (https://timsong-cpp.github.io/cppwp/n3337/generalindex#<= )'s link less than or equal to operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#less_than_or_equal_to_operator ).
== (https://timsong-cpp.github.io/cppwp/n3337/generalindex#== )'s link equality operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#equality_operator ).
> (https://timsong-cpp.github.io/cppwp/n3337/generalindex#> )'s link greater than operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#greater_than_operator ).
>= (https://timsong-cpp.github.io/cppwp/n3337/generalindex#>= )'s link greater than or equal operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#greater_than_or_equal_operator ).
?: (https://timsong-cpp.github.io/cppwp/n3337/generalindex#?: )'s link conditional expression operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conditional_expression_operator ).
\ (https://timsong-cpp.github.io/cppwp/n3337/generalindex#\ )'s link backslash (https://timsong-cpp.github.io/cppwp/n3337/generalindex#backslash ).
^ (https://timsong-cpp.github.io/cppwp/n3337/generalindex#^ )'s link bitwise exclusive OR operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#bitwise_exclusive_OR_operator ).
| (https://timsong-cpp.github.io/cppwp/n3337/generalindex#| )'s link bitwise inclusive OR operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#bitwise_inclusive_OR_operator ).
|| (https://timsong-cpp.github.io/cppwp/n3337/generalindex#|| )'s link logical OR operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#logical_OR_operator ).
0 (https://timsong-cpp.github.io/cppwp/n3337/generalindex#0 )'s link zero, null (https://timsong-cpp.github.io/cppwp/n3337/generalindex#zero,_null ).
concatenation (https://timsong-cpp.github.io/cppwp/n3337/generalindex#concatenation )'s link ## (https://timsong-cpp.github.io/cppwp/n3337/generalindex### ).
macro argument (https://timsong-cpp.github.io/cppwp/n3337/generalindex#concatenation,macro_argument )'s link ## (https://timsong-cpp.github.io/cppwp/n3337/generalindex### ).
conversion operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conversion_operator )'s link conversion, user defined (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conversion,user_defined ).
copy (https://timsong-cpp.github.io/cppwp/n3337/generalindex#copy )'s link constructor, copy; assignment, copy (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,copy;_assignment,copy ).
class object (https://timsong-cpp.github.io/cppwp/n3337/generalindex#copy,class_object )'s link constructor, copy; assignment, copy (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,copy;_assignment,copy ).
copy elision (https://timsong-cpp.github.io/cppwp/n3337/generalindex#copy_elision )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,copy,elision;_constructor,move,elision ).
decay (https://timsong-cpp.github.io/cppwp/n3337/generalindex#decay )'s link conversion, array to pointer; conversion, function to pointer (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conversion,array_to_pointer;_conversion,function_to_pointer ).
decrement operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#decrement_operator )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#overloading,decrement_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n3337/generalindex#decrement_operator,overloaded )'s link overloading, decrement operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#overloading,decrement_operator ).
elision (https://timsong-cpp.github.io/cppwp/n3337/generalindex#elision )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,copy,elision;_constructor,move,elision ).
copy (https://timsong-cpp.github.io/cppwp/n3337/generalindex#elision,copy )'s link constructor, copy, elision; constructor, move, elision (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,copy,elision;_constructor,move,elision ).
escape character (https://timsong-cpp.github.io/cppwp/n3337/generalindex#escape_character )'s link backslash (https://timsong-cpp.github.io/cppwp/n3337/generalindex#backslash ).
free store (https://timsong-cpp.github.io/cppwp/n3337/generalindex#free_store )'s link new, delete (https://timsong-cpp.github.io/cppwp/n3337/generalindex#new,_delete ).
function (https://timsong-cpp.github.io/cppwp/n3337/generalindex# )'s link friend function; member function; inline function; virtual function (https://timsong-cpp.github.io/cppwp/n3337/generalindex#friend_function;_member_function;_inline_function;_virtual_function ).
increment operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#increment_operator )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#overloading,increment_operator ).
overloaded (https://timsong-cpp.github.io/cppwp/n3337/generalindex#increment_operator,overloaded )'s link overloading, increment operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#overloading,increment_operator ).
lattice (https://timsong-cpp.github.io/cppwp/n3337/generalindex#lattice )'s link DAG, subobject (https://timsong-cpp.github.io/cppwp/n3337/generalindex#DAG,subobject ).
memory management (https://timsong-cpp.github.io/cppwp/n3337/generalindex#memory_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n3337/generalindex#new,_delete ).
move (https://timsong-cpp.github.io/cppwp/n3337/generalindex#move )'s link constructor, move; assignment, move (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,move;_assignment,move ).
class object (https://timsong-cpp.github.io/cppwp/n3337/generalindex#move,class_object )'s link constructor, move; assignment, move (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,move;_assignment,move ).
object class (https://timsong-cpp.github.io/cppwp/n3337/generalindex#object_class )'s link also class object (https://timsong-cpp.github.io/cppwp/n3337/generalindex#also_class_object ). (also should be moved outside the link.)
optimization of temporary (https://timsong-cpp.github.io/cppwp/n3337/generalindex#optimization_of_temporary )'s link elimination of temporary (https://timsong-cpp.github.io/cppwp/n3337/generalindex#elimination_of_temporary ).
rvalue (https://timsong-cpp.github.io/cppwp/n3337/generalindex#rvalue )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conversion,lvalue_to_rvalue ).
lvalue conversion to (https://timsong-cpp.github.io/cppwp/n3337/generalindex#rvalue,lvalue_conversion_to )'s link conversion, lvalue to rvalue (https://timsong-cpp.github.io/cppwp/n3337/generalindex#conversion,lvalue_to_rvalue ).
sequencing operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#sequencing_operator )'s link comma operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#comma_operator ).
shift operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#shift_operator )'s link left shift operator, right shift operator (https://timsong-cpp.github.io/cppwp/n3337/generalindex#left_shift_operator,_right_shift_operator ).
special member function (https://timsong-cpp.github.io/cppwp/n3337/generalindex#special_member_function )'s link constructor, destructor, inline function, user-defined conversion, virtual function (https://timsong-cpp.github.io/cppwp/n3337/generalindex#constructor,destructor,inline_function,user-defined_conversion,virtual_function ).
storage management (https://timsong-cpp.github.io/cppwp/n3337/generalindex#storage_management )'s link new, delete (https://timsong-cpp.github.io/cppwp/n3337/generalindex#new,_delete ).
stringize (https://timsong-cpp.github.io/cppwp/n3337/generalindex#stringize )'s link # (https://timsong-cpp.github.io/cppwp/n3337/generalindex## ).

Activity

  1. timsong-cpp commented on Apr 19, 2026

    @timsong-cpp
    Owner

    The |see thing still exists upstream, I've reported Eelis/cxxdraft-htmlgen#123

    I'm not going to try to figure out how to patch historical versions of the generator tool, but I'll consider PRs that fixes the HTML.

  2. jhcarl0814 commented on Apr 19, 2026

    @jhcarl0814
    ContributorAuthor

    @timsong-cpp Got it👌 Thanks!

  3. jhcarl0814 commented on Apr 27, 2026

    @jhcarl0814
    ContributorAuthor

    The ids of 2 hash_functions are conflicting with the ids of 2 hash functions in n3337/generalindex, n4140/generalindex and n4618/generalindex. The 2 hash_functions should be moved to n3337/libraryindex, n4140/libraryindex and n4618/libraryindex, but unlike newer versions of the libraryindex pages, the libraryindex pages don't have a unordered associative containers section for the 2nd hash_function to move to.

  4. timsong-cpp commented on Apr 29, 2026

    @timsong-cpp
    Owner

    If there are no links from elsewhere I think it's probably ok to just hack the ids?

  5. jhcarl0814 commented on Apr 29, 2026

    @jhcarl0814
    ContributorAuthor

    @timsong-cpp 👌id conflicts avoided by adding trailing underscores

  6. jhcarl0814 commented on May 4, 2026

    @jhcarl0814
    ContributorAuthor

    @timsong-cpp It appears that the links of previous versions have been fixed. These are broken links in the current working draft:

    working draft, Index (https://timsong-cpp.github.io/cppwp/generalindex )

    Some terms have conflicting ids:

    contract violation, [basic.contract.eval] and contract_violation, [basic.contract.eval], [basic.contract.handler] have same id=':contract_violation'. Maybe the second item should be in "Index of library name" (https://timsong-cpp.github.io/cppwp/libraryindex )?

    Some links' #targets do not exist:

    checking semantics (https://timsong-cpp.github.io/cppwp/generalindex#:checking_semantics )'s link contract evaluation semantics\u0001checking (https://timsong-cpp.github.io/cppwp/generalindex#:contract_evaluation_semantics\u0001checking ).
    terminating semantics (https://timsong-cpp.github.io/cppwp/generalindex#:terminating_semantics )'s link contract evaluation semantics\u0001terminating (https://timsong-cpp.github.io/cppwp/generalindex#:contract_evaluation_semantics\u0001terminating ).


    working draft, Index of library names (https://timsong-cpp.github.io/cppwp/libraryindex )

    Some terms have conflicting ids:

    operator~ and operator have same id="lib:operator~". Maybe they should be merged?

  7. timsong-cpp commented on May 4, 2026

    @timsong-cpp
    Owner

    @timsong-cpp It appears that the links of previous versions have been fixed. These are broken links in the current working draft:

    working draft, Index (https://timsong-cpp.github.io/cppwp/generalindex )

    Some terms have conflicting ids:

    contract violation, [basic.contract.eval] and contract_violation, [basic.contract.eval], [basic.contract.handler] have same id=':contract_violation'. Maybe the second item should be in "Index of library name" (https://timsong-cpp.github.io/cppwp/libraryindex )?

    It's going to the core language spec though.

    Some links' #targets do not exist:

    checking semantics (https://timsong-cpp.github.io/cppwp/generalindex#:checking_semantics )'s link contract evaluation semantics\u0001checking (https://timsong-cpp.github.io/cppwp/generalindex#:contract_evaluation_semantics\u0001checking ). terminating semantics (https://timsong-cpp.github.io/cppwp/generalindex#:terminating_semantics )'s link contract evaluation semantics\u0001terminating (https://timsong-cpp.github.io/cppwp/generalindex#:contract_evaluation_semantics\u0001terminating ).

    Eelis/cxxdraft-htmlgen#124

    working draft, Index of library names (https://timsong-cpp.github.io/cppwp/libraryindex )

    Some terms have conflicting ids:

    operator~ and operator have same id="lib:operator~". Maybe they should be merged?

    cplusplus/draft#9011

    Out of curiosity, what are you using to find these?

  8. timsong-cpp commented on May 4, 2026

    @timsong-cpp
    Owner

    @timsong-cpp It appears that the links of previous versions have been fixed. These are broken links in the current working draft:
    working draft, Index (https://timsong-cpp.github.io/cppwp/generalindex )
    Some terms have conflicting ids:

    Looks like this is a much bigger problem and a large part of it will have to be fixed in the tool:
    Eelis/cxxdraft-htmlgen#125

  9. jhcarl0814 commented on May 4, 2026

    @jhcarl0814
    ContributorAuthor

    Well, if those two links have to be on the same page, I hope they're close together (which is indeed the case) so that even if a link to #id redirects users to the wrong location (always the first element with id), they can quickly find the correct content next to it (other elements with id).

    Out of curiosity, what are you using to find these?

    I'm writing some programs (4 targets in CMake terms) to extract content from the site, structurize it, and use the built index to let users perform full-text search on the working drafts. This issue is raised while extracting content from the "Index" series of pages.

    At first glance, it seems that the Javascript snippets only need to build a map from terms to URLs, and when the programmer finds that the same term can appear multiple times, then build a map from terms to lists of URLs. However, there are see and see also links that link to #targets in the same page. I don't want users to be directed to those huge "Index" pages after clicking on search results. Instead, I want users searching for ! to see and click on the search results displayed when searching for logical negation, meaning that the see and see also links should be pre-followed to save users' time. So the resulting Javascript snippets should build a map from ids to indexes of element (in the Array to be returned from Javascript snippets), and the links pointing to #targets in the same page will be replaced by "index of element" by looking up in the map. When duplicate ids exist, the program can not guess which element a #target points to.

    The following Javascript snippets (to execute in the "Index" series of pages), (when I was debugging/testing) are executed by "Press F12 to open Chrome developer tools >> switch to the Console tab >> paste the snippet", or (when actually used by the web scraper) are executed by my_QWebEngineView->page()->runJavaScript(uR"js(...)js"_s) (if !result_QVariant.isValid() it means the Javascript snippet threw an Error, and I need to return to the browser and execute the Javascript snippet to see the error messages).

    For working draft (and also earlier versions; if it stops working at some version, stop using it and modify it to make it work):

    (function(){
        Array.from(document.querySelectorAll(".mjx-sub, sub")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("_"), e); });
        Array.from(document.querySelectorAll(".mjx-sup, sup")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("^"), e); });
        Array.from(document.querySelectorAll(".math, .mjx-chtml")).forEach(function(e){ e.replaceWith(document.createTextNode(e.textContent)); });
    
        let id_to_item_index = new Map(), url_current_page = new URL(window.location.href), items = [];
        let current_range = document.createRange();
        let assert_current_range_is_empty = function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) throw new Error(); };
        let encountered_error = false;
        let traverse_node = function(e, parent_index){
            current_range.setStartBefore(e); current_range.setEndBefore(e.children[0]); assert_current_range_is_empty();
    
            current_range.setStartBefore(e.children[0]);
            let end_e = e.children[0].querySelector("a:not([title]),div.indexitems");
            if(end_e.tagName == "A"){
                if(end_e.previousSibling.nodeType == Node.TEXT_NODE){
                    if(end_e.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling, end_e.previousSibling.data.length - 2);
                    else if(end_e.previousSibling.data == " " && end_e.previousSibling.previousSibling.nodeType == Node.ELEMENT_NODE && end_e.previousSibling.previousSibling.tagName == "I" && (end_e.previousSibling.previousSibling.innerText == "see" || end_e.previousSibling.previousSibling.innerText == "see also") && end_e.previousSibling.previousSibling.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling.previousSibling.previousSibling, end_e.previousSibling.previousSibling.previousSibling.data.length - 2);
                    else
                        throw new Error();
                }
                else
                    throw new Error();
    
            }
            else if(end_e.tagName == "DIV")
                current_range.setEndBefore(end_e);
            let item_index, term = (function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) return s; })().replaceAll("\u00AD", "");
            if(term.includes(", "))
                console.warn("!!! term.includes(\", \")", term);
            if(id_to_item_index.has(e.id)){
                console.warn("duplicate [id]:", e.id);
                item_index = id_to_item_index.get(e.id);
                if(items[item_index]["term"] != term)
                    encountered_error = true, console.error("duplicate [id], inconsistent term:", items[item_index]["term"], term);
            }
            else{
                item_index = items.length;
                id_to_item_index.set(e.id, item_index);
                items.push({
                    "term": term,
                    "links": [],
                    "children_index_relative": [],
                    "parent_index_relative": parent_index == -1 ? -1 : item_index - parent_index,
                });
            }
            items[item_index]["links"].push(...Array.from(e.querySelectorAll("a:not(& div[id] a)")).map(function(a){
                let url = new URL(a.href);
                if(url_current_page.protocol == url.protocol && url_current_page.username == url.username && url_current_page.password == url.password && url_current_page.hostname == url.hostname && url_current_page.port == url.port && url_current_page.pathname == url.pathname && url_current_page.search == url.search){
                    if(a.querySelector("&>b") != null)
                        throw new Error();
                    return decodeURIComponent(url.hash).substring(1);
                }
                else
                    return {
                        "anchor_href_hash": url.hash,
                        "anchor_href_without_hash": (url.hash = "", url.toString()),
                        // "anchor_text": a.innerText,
                        "is_bold": a.querySelector("&>b") != null,
                    }
            }));
            items[item_index]["children_index_relative"].push(...Array.from(e.querySelectorAll("div[id]:not(& div[id] div[id])")).map(function(e){ return traverse_node(e, item_index) - item_index; }));
            current_range.setStartAfter(e.children[0]); current_range.setEndAfter(e); assert_current_range_is_empty();
            return item_index;
        };
        Array.from(document.querySelectorAll(".wrapper>div[id]")).forEach(function(e){ traverse_node(e, -1); });
        for(let [item_index, item] of items.entries()){
            if(item["links"].length == 0 && item["children_index_relative"].length == 0)
                throw new Error();
            for(let link_index = 0; link_index != item["links"].length; ++link_index){
                if(typeof item["links"][link_index] == "string"){
                    if(!id_to_item_index.has(item["links"][link_index]))
                        encountered_error = true, console.error("!id_to_item_index.has(item[\"links\"][link_index])", item, link_index);
                    item["links"][link_index] = id_to_item_index.get(item["links"][link_index]) - item_index;
                }
            }
        }
        if(encountered_error){
            console.log(items);
            throw new Error();
        }
        return items;
    })()

    For N4861 (and also earlier versions; if it stops working at some version, stop using it and modify it to make it work):

    (function(){
        Array.from(document.querySelectorAll(".mjx-sub, sub")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("_"), e); });
        Array.from(document.querySelectorAll(".mjx-sup, sup")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("^"), e); });
        Array.from(document.querySelectorAll(".math, .mjx-chtml")).forEach(function(e){ e.replaceWith(document.createTextNode(e.textContent)); });
    
        let id_to_item_index = new Map(), url_current_page = new URL(window.location.href), items = [];
        let current_range = document.createRange();
        let assert_current_range_is_empty = function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) throw new Error(); };
        let encountered_error = false;
        let traverse_node = function(e, parent_index){
            current_range.setStartBefore(e); current_range.setEndBefore(e.children[0]); assert_current_range_is_empty();
    
            current_range.setStartBefore(e.children[0]);
            let end_e = e.children[0].querySelector("a:not(.grammarterm),div.indexitems");
            if(end_e.tagName == "A"){
                if(end_e.previousSibling.nodeType == Node.TEXT_NODE){
                    if(end_e.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling, end_e.previousSibling.data.length - 2);
                    else if(end_e.previousSibling.data == " " && end_e.previousSibling.previousSibling.nodeType == Node.ELEMENT_NODE && end_e.previousSibling.previousSibling.tagName == "I" && (end_e.previousSibling.previousSibling.innerText == "see" || end_e.previousSibling.previousSibling.innerText == "see also") && end_e.previousSibling.previousSibling.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling.previousSibling.previousSibling, end_e.previousSibling.previousSibling.previousSibling.data.length - 2);
                    else
                        throw new Error();
                }
                else
                    throw new Error();
    
            }
            else if(end_e.tagName == "DIV")
                current_range.setEndBefore(end_e);
            let item_index, term = (function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) return s; })();
            if(term.includes(", "))
                console.warn("!!! term.includes(\", \")", term);
            if(id_to_item_index.has(e.id)){
                console.warn("duplicate [id]:", e.id);
                item_index = id_to_item_index.get(e.id);
                if(items[item_index]["term"] != term)
                    encountered_error = true, console.error("duplicate [id], inconsistent term:", items[item_index]["term"], term);
            }
            else{
                item_index = items.length;
                id_to_item_index.set(e.id, item_index);
                items.push({
                    "term": term,
                    "links": [],
                    "children_index_relative": [],
                    "parent_index_relative": parent_index == -1 ? -1 : item_index - parent_index,
                });
            }
            items[item_index]["links"].push(...Array.from(e.querySelectorAll("a:not(& div[id] a)")).map(function(a){
                let url = new URL(a.href);
                if(url_current_page.protocol == url.protocol && url_current_page.username == url.username && url_current_page.password == url.password && url_current_page.hostname == url.hostname && url_current_page.port == url.port && url_current_page.pathname == url.pathname && url_current_page.search == url.search){
                    if(a.querySelector("&>b") != null)
                        throw new Error();
                    return decodeURIComponent(url.hash).substring(1);
                }
                else
                    return {
                        "anchor_href_hash": url.hash,
                        "anchor_href_without_hash": (url.hash = "", url.toString()),
                        // "anchor_text": a.innerText,
                        "is_bold": a.querySelector("&>b") != null,
                    }
            }));
            items[item_index]["children_index_relative"].push(...Array.from(e.querySelectorAll("div[id]:not(& div[id] div[id])")).map(function(e){ return traverse_node(e, item_index) - item_index; }));
            current_range.setStartAfter(e.children[0]); current_range.setEndAfter(e); assert_current_range_is_empty();
            return item_index;
        };
        Array.from(document.querySelectorAll(".wrapper>div[id]")).forEach(function(e){ traverse_node(e, -1); });
        for(let [item_index, item] of items.entries()){
            if(item["links"].length == 0 && item["children_index_relative"].length == 0)
                throw new Error();
            for(let link_index = 0; link_index != item["links"].length; ++link_index){
                if(typeof item["links"][link_index] == "string"){
                    if(!id_to_item_index.has(item["links"][link_index]))
                        encountered_error = true, console.error("!id_to_item_index.has(item[\"links\"][link_index])", item, link_index);
                    item["links"][link_index] = id_to_item_index.get(item["links"][link_index]) - item_index;
                }
            }
        }
        if(encountered_error){
            console.log(items);
            throw new Error();
        }
        return items;
    })()

    For N4659 (and also earlier versions; if it stops working at some version, stop using it and modify it to make it work):

    (function(){
        Array.from(document.querySelectorAll(".mjx-sub, sub")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("_"), e); });
        Array.from(document.querySelectorAll(".mjx-sup, sup")).forEach(function(e){ e.parentNode.insertBefore(document.createTextNode("^"), e); });
        Array.from(document.querySelectorAll(".math, .mjx-chtml")).forEach(function(e){ e.replaceWith(document.createTextNode(e.textContent)); });
    
        let id_to_item_index = new Map(), url_current_page = new URL(window.location.href), items = [];
        let current_range = document.createRange();
        let assert_current_range_is_empty = function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) throw new Error(); };
        let encountered_error = false;
        let traverse_node = function(e, parent_index){
            current_range.setStartBefore(e); current_range.setEndBefore(e.children[0]); assert_current_range_is_empty();
    
            current_range.setStartBefore(e.children[0]);
            let end_e = e.children[0].querySelector("a:not(.grammarterm):not(i>a),div.indexitems");
            if(end_e.tagName == "A"){
                if(end_e.previousSibling.nodeType == Node.TEXT_NODE){
                    if(end_e.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling, end_e.previousSibling.data.length - 2);
                    else if(end_e.previousSibling.data == " " && end_e.previousSibling.previousSibling.nodeType == Node.ELEMENT_NODE && end_e.previousSibling.previousSibling.tagName == "I" && (end_e.previousSibling.previousSibling.innerText == "see" || end_e.previousSibling.previousSibling.innerText == "see also") && end_e.previousSibling.previousSibling.previousSibling.data.endsWith(", "))
                        current_range.setEnd(end_e.previousSibling.previousSibling.previousSibling, end_e.previousSibling.previousSibling.previousSibling.data.length - 2);
                    else
                        throw new Error();
                }
                else
                    throw new Error();
    
            }
            else if(end_e.tagName == "DIV")
                current_range.setEndBefore(end_e);
            let item_index, term = (function(){ window.getSelection().removeAllRanges(); window.getSelection().addRange(current_range); let s = window.getSelection().toString().trim(); if(s.length != 0) return s; })().replaceAll("-\n", "");
            if(term.includes(", "))
                console.warn("!!! term.includes(\", \")", term);
            if(id_to_item_index.has(e.id)){
                console.warn("duplicate [id]:", e.id);
                item_index = id_to_item_index.get(e.id);
                if(items[item_index]["term"] != term)
                    encountered_error = true, console.error("duplicate [id], inconsistent term:", items[item_index]["term"], term);
            }
            else{
                item_index = items.length;
                id_to_item_index.set(e.id, item_index);
                items.push({
                    "term": term,
                    "links": [],
                    "children_index_relative": [],
                    "parent_index_relative": parent_index == -1 ? -1 : item_index - parent_index,
                });
            }
            items[item_index]["links"].push(...Array.from(e.querySelectorAll("a:not(& div[id] a)")).map(function(a){
                let url = new URL(a.href);
                if(url_current_page.protocol == url.protocol && url_current_page.username == url.username && url_current_page.password == url.password && url_current_page.hostname == url.hostname && url_current_page.port == url.port && url_current_page.pathname == url.pathname && url_current_page.search == url.search){
                    if(a.querySelector("&>b") != null)
                        throw new Error();
                    return decodeURIComponent(url.hash).substring(1);
                }
                else
                    return {
                        "anchor_href_hash": url.hash,
                        "anchor_href_without_hash": (url.hash = "", url.toString()),
                        // "anchor_text": a.innerText,
                        "is_bold": a.querySelector("&>b") != null,
                    }
            }));
            items[item_index]["children_index_relative"].push(...Array.from(e.querySelectorAll("div[id]:not(& div[id] div[id])")).map(function(e){ return traverse_node(e, item_index) - item_index; }));
            current_range.setStartAfter(e.children[0]); current_range.setEndAfter(e); assert_current_range_is_empty();
            return item_index;
        };
        Array.from(document.querySelectorAll(".wrapper>div[id]")).forEach(function(e){ traverse_node(e, -1); });
        for(let [item_index, item] of items.entries()){
            if(item["links"].length == 0 && item["children_index_relative"].length == 0)
                throw new Error();
            for(let link_index = 0; link_index != item["links"].length; ++link_index){
                if(typeof item["links"][link_index] == "string"){
                    if(!id_to_item_index.has(item["links"][link_index]))
                        encountered_error = true, console.error("!id_to_item_index.has(item[\"links\"][link_index])", item, link_index);
                    item["links"][link_index] = id_to_item_index.get(item["links"][link_index]) - item_index;
                }
            }
        }
        if(encountered_error){
            console.log(items);
            throw new Error();
        }
        return items;
    })()
  10. jhcarl0814 commented on May 7, 2026

    @jhcarl0814
    ContributorAuthor

    @timsong-cpp The (PC-only) webpage is ready. It's incomplete because the content from https://timsong-cpp.github.io/cppwp/generalindex and https://timsong-cpp.github.io/cppwp/libraryindex are not scraped.
    https://jhcarl0814.github.io/cpp_working_drafts/cpp_working_drafts.html
    However, on the first visit, it takes about 10 seconds to download the index. The website can also be run locally by downloading the repo.

    Query parameters can be used to control settings when sharing links, e.g.:
    https://jhcarl0814.github.io/cpp_working_drafts/cpp_working_drafts.html?filter_standard_version=N3337,N4140,N4618,N4659,N4861,N4868,N4950,working_draft&filter_result_type=index_item_term,section_number,section_title,section_abbreviation,body_text_content,footnote_content&q=to_underlying

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions