Loci Programming Language
Getting Started
Dependencies
How to build
Documentation
Examples
Testing
Development
Queries/Suggestions
Releases
Available Releases
Future Development
Language Goals
Background
Aims
Name
Specific Goals
Design
Compatibility with C
Syntax
Semantics
Type Syntax
Structs
Enums
Unions
Calling to/from C
C Strings
Algebraic Datatypes
Pattern Matching
Assert Statement
Unreachable Statement
Classes
Declarations
Definitions
Constructors
This and Self
Const
Usage
Properties
Logical Const
Casting Const Away
Control Flow
While Loop
For-each Loop
C/C++ For Loop
Break/Continue
Exceptions
Recommended Usage
Rethrow
Noexcept
Overriding Static Analysis with Assert
Destructors
Cleanup
Exception Specifications
Hashing
Hashable Type
Hashing algorithm
Hash function
Implicit Operations
Implicit Copying
Implicit Casts
Lifetime Methods
islive
setdead
move
destroy
isvalid
setinvalid
Literals
Literal Specifiers
Lvalues and Rvalues
Custom Lvalues
Primitive Lvalues
Lvalues and Memory Management Classes
Modules
Imports
Exports
API Versions
In C and C++
Implementation
Move vs Copy
Move by default
Copy by choice
Implicit copy
Why move by default?
Why not copy by default?
Customising move operations per type
Object Memory States
Live State
Dead State
Invalid State
Operator Overloading
Methods
Operator Combinations
Predicates
Predicate Expression
Using Predicates
Predicate Aliases
Primitive Objects
Methods
Semantics
Extending Primitives
Implementation
Ranges
Input Range
Bidirectional Range
Output Range
References
Indirect Method Call
Assignment
As a template argument
References-to-references
Manipulating a reference
Conversion to pointers
Structural Typing
Interfaces
Primitive Objects
Implementation
Templates
Type Properties
Function Templates
Template Generation
Unused Values
Detecting unused variables not marked
Detecting used variables marked unused
Value Generators
Counters
Custom Value Generators
Variants
Datatype Short Syntax
Extracting elements
Method Calls
Concurrency
Condition Variable
Message Queue
Mutex
Thread
Containers
Circular Queue
List
Map
Set
Varray
Heap Memory Management
Ownership Strategies
Strings
String Builder
UTF-8 Buffer
UTF-8 Encoder
Literals
Flyweight Strings
Tuples
Compiler Design
Representations
Stages
Dynamic Dispatch
Calling a method
Conflict Resolution
Code example
Performance
Hash Value Collisions
Compiler Implementation
External Links
Introduction to LLVM
Multi-pass Compilation
Semantics
Implementation
Name Mangling
C-like Functions
Class Method
Namespace Class Method
Named Module Function
Template Generators
C++’s export keyword
Loci Templates
Pass-through
Optimisation
Vtable Generation
Typing Systems
Hash Tables
Vtable Pointer
Vtables in Templates
Effect of Const
Proposal: Atomic Operations
Usage
Implementation
Proposal: Casting Rules
Cast Operations
Cast Sequence
Noop Casts
Variant Parent Casts
Deref Reference Casts
Polymorphic Reference Casts
Polymorphic Static Reference Casts
Implicit Copy Ref
Implicit Copy Const
Bind
Proposal: Class Inheritance
Overriding Methods
Deleting Methods
Multiple Inheritance
Virtual Inheritance
Rationale
Developer Advice
Proposal: Exception Specifications
Usage
Rationale
Interaction with other features
Proposal: Future Standard Library Modules
Proposal: Improvements to APIs
Rationale
Design
Interacting with other languages
Proposal: Interacting with C++
Functions
Function overloading
Functions with default arguments
C++ Classes
Loci interfaces
Templates
Proposal: Late Move Parameters
Rationale
Usage
Implementation
Interaction with other features
Named Parameters
Reversibility
Proposal: Merge Template Generators and Vtables
Introduction
Unifying template generators and vtables
Passing template arguments on stack
Encoding path into vtable pointer
Summary
Proposal: Named Parameters
Proposal: Object Properties
Language
Standard library
Proposal: Remove Lifetime Methods
Rationale
Changes
Proposal: RTTI
is_a
dynamic_cast
typeid
Proposal: Style Rules
Rationale
Warnings
Naming
Indentation
Line length
Whitespace
Proposal: Variadic Templates
Proposal: Vector Types
Proposal: Virtual Template Variables
Rationale
Changes
Function Overloading
Garbage Collection
Loci Programming Language
Docs
»
Proposal: Variadic Templates
View page source
Proposal: Variadic Templates
ΒΆ
Note
Feature awaiting further design consideration.
(No syntax yet described.)