The documentation of (const) sheet_by_index already mentions that
invalid_parameter exception will be thrown if the index is out of
range, but the implementation was missing.
Otherwise, XLNT_INCLUDE_INSTALL_DIR is not set correctly and find_package(Xlnt) results to an error:
```
CMake Error at /usr/lib64/cmake/xlnt/XlntConfig.cmake:23 (message):
File or directory include referenced by variable XLNT_INCLUDE_DIR does not
exist !
Call Stack (most recent call first):
/usr/lib64/cmake/xlnt/XlntConfig.cmake:41 (set_and_check)
CMakeLists.txt:4 (find_package)
```
The content of the line 41 of /usr/lib64/cmake/xlnt/XlntConfig.cmake is: `set_and_check(XLNT_INCLUDE_DIR "include")`.
I'm using the Arch Linux user repository package https://aur.archlinux.org/packages/xlnt/.
The used build manual is described here: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=xlnt.
the standard xlnt::cell and xlnt::cell_reference have plenty of extra functionality that just slows things down during (de)serialisation
These intermediate structs can be used to minimise overhead before transforming to the final type
user defined copy operators suppress compiler creation of move operations, and not having all of copy/move/dtor
defined (rule of 0/5) is suspicious. Also happens to be very slightly slower
inlineStr XML structure is <c><is><t>. This was being parsed incorrectly
when streaming (because has_value wasn't being set to true) and when
reading the whole file (because the <t> was ignored).
[closes#445]
Tested on g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Note: Actually,it is not a BUG. It is compiler related issue. The issue #385 is not shown in g++-6 and clang.
this was being done already in most cases, and allows some simplification
e.g. no need to check if something is already present, since we're starting with a blank